스페이스x
232
2020-05-17 17:14:14 작성 2020-05-17 17:15:05 수정됨
3
263

자바과제 왜 실행이 안되는지 알수있을까요


3번 문제인데 답은 다른코드로 알고있는데


왜 제 코드가 안될까요 아예 에러가 나서 실행이안됩니다 ㅠㅠ




ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ


import java.util.Scanner;

import java.util.StringTokenizer;

public class ll {

public static void main(String [] args) {

Scanner scanner = new Scanner(System.in);

System.out.print("식을 입력하시오");

String set = scanner.next();

StringTokenizer st = new StringTokenizer(set,"+-");

int sum=0;

while (st.hasMoreTokens()) {

if (st.nextToken().equals("+")) {

sum = sum + Integer.parseInt(st.nextToken());}

else if (st.nextToken().equals("-")) {

sum = sum -Integer.parseInt(st.nextToken());}

else {

sum= sum + Integer.parseInt(st.nextToken());}

}

System.out.print("총합 : " + sum);

}

}

0
0
  • 답변 3

  • asd
    16k
    2020-05-17 17:20:30

    nextToken 는 호출할때마다 커서를 이동시키면서 상태를 변경하는 메서드입니다.

    if(s.nextToken().equals("")) {

      String str = s.nextToken();

    }

    이런식으로 사용하면 if문 조건에 사용된 nextToken 과 if 문 내에서 사용된 nextToken 의 값이 다르다는거죠(커서 2번 이동)

    지금 while 문 안에있는 nextToken을 전부 변수로 추출해서 코드를 작성해보세요.

    while() {

      String token = nextToken();

      // ... token 변수 사용

    }

    1
  • 스페이스x
    232
    2020-05-17 17:26:20 작성 2020-05-17 17:30:48 수정됨

    if문 조건과 if문 내에서 사용된 token이 다른걸 의도한거긴합니다 ...


    예를들어 2+3-5를 입력하면


    첫번째 토큰인 숫자가(else문 조건) sum에 2가 저장되고(else문 내용)


    두번째 토큰이 +로 인식되니( if문 조건) 세번째 토큰인 3을 sum에 더한다(if문 조건)


    네번째 토큰이 -로 인식되니(else if문 조건) 다섯번째 토큰인 5를 sum에서 뺀다(else if문 조건)


    이렇게 설계해봤습니다 근데 안되어서요 ㅠㅠ



    변수로 한번 해보겠습니다

    0
  • asd
    16k
    2020-05-17 19:40:38

    근데 저렇게하면 if 에서 체크안하면 else if 에서 또 nextToken 호출될거라서 그래도 글쓴분 의도랑은 다르게 동작할거같네요

    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.