为什么我的计算器在我可以登录之前自动回答“0”?

时间:2015-01-14 15:33:14

标签: java eclipse

在第15行的某处,它给了我一些问题。

 import java.util.Scanner;

 public class Main 
 {
 public static void main(String[] args) 
 {
 Scanner  sc = new Scanner(System.in); //scanner object created

 System.out.println("Enter your first number");
  int nr1 = sc.nextInt();
 System.out.println("Enter your second number");
 int nr2 = sc.nextInt();
 System.out.println("Enter your sign (+ , - , /, *)");
 String anvin = sc.nextLine();
 int ans = 0; 

//在这条线的某个地方遇到了问题。它给了我答案才能把我的标志放进去;

 if(anvin.equalsIgnoreCase("+")) {
 ans = nr1 + nr2;
 }
 else if(anvin.equalsIgnoreCase("-")) {
 ans = nr1 - nr2;
 }
 else if(anvin.equalsIgnoreCase("*")) {
 ans = nr1 * nr2;
 }
 else if(anvin.equalsIgnoreCase("/")) {
 ans = nr1 / nr2;
 }

System.out.println(ans);

System.out.println("To continue type yes");
String yes= sc.nextLine();

if(yes.equalsIgnoreCase("yes")) {
return;

}
}
}

它回答“0”无论我输入什么之后我都可以放入我的标志

Enter your first number
9
Enter your second number
9
Enter your sign (+ , - , /, *)
0
To continue type yes

请告诉我我做错了什么并可能纠正它以便我能进一步了解

4 个答案:

答案 0 :(得分:1)

更改

String anvin = sc.nextLine();

String anvin = sc.next();

另请注意,您可能会划分为零; - )

修改

也改变了

String yes= sc.nextLine();

String yes= sc.next();

答案 1 :(得分:1)

尝试将sc.nextInt()行更改为Integer.parseInt(sc.nextLine())。这应该可以使您的代码正常工作。

编辑:更新代码以包含一个while循环,以便您可以根据评论进行多次运行。这还需要您将最后一个if语句更改为break;而不是return;

Scanner sc = new Scanner(System. in ); //scanner object created

while (true) {
    System.out.println("Enter your first number");
    int nr1 = Integer.parseInt(sc.nextLine());
    System.out.println("Enter your second number");
    int nr2 = Integer.parseInt(sc.nextLine());
    System.out.println("Enter your sign (+ , - , /, *)");
    String anvin = sc.nextLine();
    int ans = 0;
    //somewhere around this line is where it is having the problems. it gives me the answer before i can put in my sign;
    if (anvin.equalsIgnoreCase("+")) {
        ans = nr1 + nr2;
    } else if (anvin.equalsIgnoreCase("-")) {
        ans = nr1 - nr2;
    } else if (anvin.equalsIgnoreCase("*")) {
        ans = nr1 * nr2;
    } else if (anvin.equalsIgnoreCase("/")) {
        ans = nr1 / nr2;
    }

    System.out.println(ans);
    System.out.println("To continue type yes");
    String yes = sc.nextLine();

    if (!yes.equalsIgnoreCase("yes")) {
        break;
    }
}

答案 2 :(得分:0)

我建议你这样做,你不仅可以学习使用对象,还可以学习更好的编写托管代码的方法, Calculator.java - >一个班级

import java.util.Scanner;
public class Calculator {

public static void main(String[] args) {
    //Instantiate
    Scanner input = new Scanner(System.in);
    Calculations calc = new Calculations();

    // Variable declarations
    double answer = 0, entry1 , entry2 ;
    char operator;

    // Start 
    System.out.println("***** Welcome to the Command line calculator program *****");
    System.out.print("Please enter the first number :");
    entry1 = input.nextDouble();
    System.out.print("Please enter the second number:");
    entry2 = input.nextDouble();
    System.out.println("Please enter the operation : ");
    System.out.println("***** Operations :- + -> Add ; - ->Substract ; / -> Divide ; * -> Multiply ; ^ : Power *****");
    operator = input.next().charAt(0);

    // Switch case

    switch (operator){

        case '+' : answer = calc.add(entry1, entry2);
            break;
        case '-' : answer = calc.substract(entry1, entry2);
            break;
        case '/' : answer = calc.divide(entry1, entry2);
            break;
        case '*' : answer = calc.multiply(entry1, entry2);
            break; 
        case '^' : answer = calc.power(entry1, entry2); 
            break;
    }

    System.out.println(entry1 + " " + operator + " " + entry2 + " = " + answer);    
}
}`

Calculations.java - >另一个持有计算的类

import java.math.*;
public class Calculations {
    // Addition Method
    double add (double first, double second){
        double answer = first + second;
        return answer;
    }
    // Substraction Method
    double substract (double first, double second){
        double answer = first - second;
        return answer;
    }
    // Multiplication Method
    double multiply (double first, double second){
        double answer = first * second;
        return answer;
    }
    // Division Method
    double divide (double first, double second){
        double answer = first / second;
        return answer;
    }
    // Power Method
    double power(double a, double b){
        double answer =Math.pow(a, b);
        return answer;
    }

} 

答案 3 :(得分:0)

而不是sc.nextLine();使用sc.next();