구문 분석 된 Double이 올바르게 작동하지 않는 이유는 무엇입니까?

마크 1092

여기에 사용자가 다음과 같이 문자열을 입력 할 수있는 switch 문이있는 간단한 계산기가 있습니다. * 5

연산자는 다음과 같을 수 있습니다.-+ / 또는 * 코드는 더하기 동안 올바르게 수행되지만 값을 빼면 값이 더 해지고 나누거나 곱하면 아래 나열된 예외가 발생합니다.

Enter an operator and a number:
+5
Enter an operator and a number:
*2
Exception in thread "main" java.lang.NumberFormatException: For input string: "*2"
    at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2043)
    at sun.misc.FloatingDecimal.parseDouble(FloatingDecimal.java:110)
    at java.lang.Double.parseDouble(Double.java:538)
    at Calculator.whatOperator(Calculator.java:38)
    at Calculator.aResult(Calculator.java:29)
    at Main.main(Main.java:30)

나는 어떤 이유로 더블을 올바르게 파싱하지 않는다고 생각하지만 그렇게하는 방법을 잘 모르겠습니다 ... 나는 stringtokenizer를 생각하고 있었지만 구분 기호없이 tokenizer를 어떻게 사용할 수 있습니까? 여기 내 계산기 수업이 있고 그 아래는 내 주요 수업입니다.

import java.util.Scanner;
public class Calculator {
    private final int RESET = 0;
    private double number = 0;
    private double result = 0; 
    private char operator;
    private Scanner keyboard = new Scanner(System.in);
    public Calculator(double number)
    {
        this.number = number;

    }
    public void reset()
    {
        this.number = RESET;
    }
    public double aResult(Calculator other)
    {

        other.whatOperator();
        this.result = other.result;
        return result;

    } 

    public void whatOperator()
    {
        String operatorString = enterNumber();
        // the error occurs here....is there a better way to do this?
        double theNumber = Double.parseDouble(operatorString);
        char theOperator = operatorString.charAt(0);
        this.operator = theOperator;
        operatorString ="";
        operatorString += theOperator;

        // the switch should perform the operation 
        switch(operatorString){
        case "*":
        result = getNumber() * theNumber;
        break;
        case "/":
        result = getNumber() / theNumber;
        break;
        case "+":
        result = getNumber() + theNumber;
        break;
        case "-":
        result = getNumber() - theNumber;
        break;
        case "R":
        result = RESET;
        break;
        case "P":
        System.out.println("Goodbye");
        System.exit(0);

    }


}
public double add(double secondNumber)
{
    result = number + secondNumber;
    return result;

}
public double divide(double secondNumber)
{
    result = number / secondNumber;
    return result;
}
public double multiply(double secondNumber)
{
    result = number * secondNumber;
    return result;
}
public void subtract(double secondNumber)
{
    result = number - secondNumber;
}


public double getNumber()
{
    return number;
}
public void setNumber(double number)
{
    this.number = number;
}
    public  String enterNumber()
    {

        System.out.println("Enter an operator and a number:");
        String toString = keyboard.nextLine();
        return toString;
    }

}
public class Main {

    public static void main (String[] args) {
        Calculator a = new Calculator(0);
        a.setNumber(a.aResult(a));
        a.setNumber(a.aResult(a));
        String theString = String.valueOf(a.getNumber());
        System.out.println(theString);
    }
}
에리히 키츠 뮐러

이 줄은 잘못되었습니다.

double theNumber = Double.parseDouble(operatorString);

연산자를 숫자의 일부로 구문 분석하기 때문입니다. 대신 다음을 사용하십시오.

double theNumber = Double.parseDouble(operatorString.substring(1));

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

xargs가 내 입력을 올바르게 구문 분석하지 않는 이유는 무엇입니까?

분류에서Dev

이 JSON이 올바르게 구문 분석되지 않는 이유는 무엇입니까?

분류에서Dev

Float 값이 String에서 구문 분석 할 때 올바르지 않습니다. double이 작동합니다. 이유는 무엇입니까?

분류에서Dev

Boost.Spirit가 식별자를 std :: string으로 올바르게 구문 분석하지만 std :: string으로 만 구성된 적응 형 구조체로 구문 분석하지 않는 이유는 무엇입니까?

분류에서Dev

JSON 구문 분석이 작동하지 않는 이유는 무엇입니까?

분류에서Dev

Node.js가 다음 페이지를 올바르게 구문 분석하지 않는 이유는 무엇입니까?

분류에서Dev

펄스 / 알사에서 왜곡 된 오디오, JACK에서 잘 작동합니다. JACK이 올바르게 작동하는 이유를 분석하고 그 지식을 사용하여 pulse / alsa 구성을 수정하는 방법은 무엇입니까?

분류에서Dev

수신 된 직렬 데이터를 라인으로 올바르게 구문 분석하는 방법은 무엇입니까?

분류에서Dev

Ajax가 데이터를 올바르게 구문 분석하지 않습니까?

분류에서Dev

파일을 올바르게 구문 분석 할 수 없습니다. Glob이 작동하지 않음

분류에서Dev

Joda 시간이 월을 올바르게 구문 분석하지 않습니다.

분류에서Dev

IF / THEN이 올바르게 작동하지 않는 이유는 무엇입니까?

분류에서Dev

내 ajax 소스 DataTable이 올바르게 구문 분석되지 않습니까?

분류에서Dev

PEGjs가 / 올바르게 작동하지 않는 이유는 무엇입니까?

분류에서Dev

count (*)가 올바르게 작동하지 않는 이유는 무엇입니까?

분류에서Dev

구문 분석 한 HTML 템플릿이 작동하지 않는 이유는 무엇입니까?

분류에서Dev

simplexml_load_string이 올바르게 구문 분석되지 않습니다.

분류에서Dev

데이터 프레임 분할 및 분해 방법이 올바르게 작동하지 않는 문제를 해결하는 방법은 무엇입니까?

분류에서Dev

HL7 메시지 문자열을 올바르게 구문 분석하는 방법은 무엇입니까?

분류에서Dev

내 Unix 시간이 일관되게 구문 분석되지 않는 이유는 무엇입니까?

분류에서Dev

PHP의 문자열에서 온도를 올바르게 구문 분석하는 방법은 무엇입니까?

분류에서Dev

이 Boost.Spirit x3 규칙이 꺾쇠 괄호로 올바르게 구문 분석되지만 따옴표로 잘못 구문 분석되는 이유는 무엇입니까?

분류에서Dev

Moment.JS가 24 시간 날짜를 올바르게 구문 분석하지 않는 이유

분류에서Dev

Github 페이지 + Jekyll이 마크 다운을 올바르게 구문 분석하지 않았습니까?

분류에서Dev

루프 내에서 expss의 mdsets를 올바르게 구문 분석하는 방법은 무엇입니까?

분류에서Dev

따옴표를 올바르게 구문 분석하는 방법은 무엇입니까?

분류에서Dev

SSIS 변수 식을 올바르게 구문 분석하는 방법은 무엇입니까?

분류에서Dev

시간대로 날짜를 올바르게 구문 분석하는 방법은 무엇입니까?

분류에서Dev

로컬 XML을 올바르게 구문 분석하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    xargs가 내 입력을 올바르게 구문 분석하지 않는 이유는 무엇입니까?

  2. 2

    이 JSON이 올바르게 구문 분석되지 않는 이유는 무엇입니까?

  3. 3

    Float 값이 String에서 구문 분석 할 때 올바르지 않습니다. double이 작동합니다. 이유는 무엇입니까?

  4. 4

    Boost.Spirit가 식별자를 std :: string으로 올바르게 구문 분석하지만 std :: string으로 만 구성된 적응 형 구조체로 구문 분석하지 않는 이유는 무엇입니까?

  5. 5

    JSON 구문 분석이 작동하지 않는 이유는 무엇입니까?

  6. 6

    Node.js가 다음 페이지를 올바르게 구문 분석하지 않는 이유는 무엇입니까?

  7. 7

    펄스 / 알사에서 왜곡 된 오디오, JACK에서 잘 작동합니다. JACK이 올바르게 작동하는 이유를 분석하고 그 지식을 사용하여 pulse / alsa 구성을 수정하는 방법은 무엇입니까?

  8. 8

    수신 된 직렬 데이터를 라인으로 올바르게 구문 분석하는 방법은 무엇입니까?

  9. 9

    Ajax가 데이터를 올바르게 구문 분석하지 않습니까?

  10. 10

    파일을 올바르게 구문 분석 할 수 없습니다. Glob이 작동하지 않음

  11. 11

    Joda 시간이 월을 올바르게 구문 분석하지 않습니다.

  12. 12

    IF / THEN이 올바르게 작동하지 않는 이유는 무엇입니까?

  13. 13

    내 ajax 소스 DataTable이 올바르게 구문 분석되지 않습니까?

  14. 14

    PEGjs가 / 올바르게 작동하지 않는 이유는 무엇입니까?

  15. 15

    count (*)가 올바르게 작동하지 않는 이유는 무엇입니까?

  16. 16

    구문 분석 한 HTML 템플릿이 작동하지 않는 이유는 무엇입니까?

  17. 17

    simplexml_load_string이 올바르게 구문 분석되지 않습니다.

  18. 18

    데이터 프레임 분할 및 분해 방법이 올바르게 작동하지 않는 문제를 해결하는 방법은 무엇입니까?

  19. 19

    HL7 메시지 문자열을 올바르게 구문 분석하는 방법은 무엇입니까?

  20. 20

    내 Unix 시간이 일관되게 구문 분석되지 않는 이유는 무엇입니까?

  21. 21

    PHP의 문자열에서 온도를 올바르게 구문 분석하는 방법은 무엇입니까?

  22. 22

    이 Boost.Spirit x3 규칙이 꺾쇠 괄호로 올바르게 구문 분석되지만 따옴표로 잘못 구문 분석되는 이유는 무엇입니까?

  23. 23

    Moment.JS가 24 시간 날짜를 올바르게 구문 분석하지 않는 이유

  24. 24

    Github 페이지 + Jekyll이 마크 다운을 올바르게 구문 분석하지 않았습니까?

  25. 25

    루프 내에서 expss의 mdsets를 올바르게 구문 분석하는 방법은 무엇입니까?

  26. 26

    따옴표를 올바르게 구문 분석하는 방법은 무엇입니까?

  27. 27

    SSIS 변수 식을 올바르게 구문 분석하는 방법은 무엇입니까?

  28. 28

    시간대로 날짜를 올바르게 구문 분석하는 방법은 무엇입니까?

  29. 29

    로컬 XML을 올바르게 구문 분석하는 방법은 무엇입니까?

뜨겁다태그

보관