소라게
100
2021-05-17 16:41:01
3
176

[JAVA] 계산할 때 엔터 입력받으면 결과가 출력되게 하고 싶어요.


사용자에게 1+2-4*3

3-4*2+3/9-3

이런식으로 숫자와 사칙연산 연산자를 차례로 (무한정 원하는대로) 입력하게 하고

엔터 누를 시 연산하여 출력해주고 싶은데,

"엔터를 누르면" 연산을 하게 만드는 기능을 어떻게 구현할 수 있을까요?

0
  • 답변 3

  • BalanceE
    608
    2021-05-17 16:48:16

    Scanner를 이용해서 입력을 받아야하는데

    저걸 입력자가 무한히 한 변수에 담도록 입력을 받으면

    문자열 형태로 받게 됩니다.

    즉, 문자열의 변수를 사칙연산에 맞게 추출하는 과정 ( 파싱 ) 이 필요한데 

    글쓴이님의 현재 상황에서는 구현이 어려울듯 합니다.


    해서 차선책으로는

    1. 숫자 변수 입력 받기

    2. 기호 입력받기

    3. 숫자 입력 받기

    4. 숫자 변수 ... 

    의 순서로 매번 입력받을 때마다 연산이 되게끔 하는걸로 먼저 하시는걸 추천드려요


  • chlguswns980105
    149
    2021-05-17 17:41:28 작성 2021-05-17 17:41:51 수정됨

    일단 윗 분께서 말씀하신 대로 Scanner 클래스를 사용하면 됩니다.

    Scanner의 next() 메서드를 이용하면 계속해서 입력 후 엔터를 쳤을 때 한 줄의 문자열을 얻을 수 있는데, 

    해당 문자열에서 숫자랑 연산자를 파싱하여 연산하는 로직을 짜면 될 듯 합니다.

  • 윗 분들께서 남겨주신 답변에 추가로 적어드립니다.

    JAVA는 아니지만 다른 언어를 사용할 적에 문자열로 된 수식을 코드로 변환하여 실행할 수 있는 것이 있을까 하며 찾아봤던 적이 있는데요, 지금 검색해보니 JAVA에서도 버전만 맞으면 비슷한 기능을 사용할 수 있는 것 같네요. Java eval 함수라고 한 번 검색해보셔요. 관련된 정보를 찾을 수 있지 않을까 싶습니다.

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