扫描仪“输入无法解决变量”错误

时间:2013-08-23 20:45:27

标签: java input

所以我是Java的完整菜鸟并尝试使用计算器。下面的代码是我到目前为止的代码。问题是代码有效,直到我添加标签“loops:”,添加标签后,Scanner因某种原因出错。我想要循环标签,以便用户可以选择(如果在代码底部的语句)是否继续使用计算器。任何帮助将不胜感激。

import java.util.Scanner;


public class MainClass {



    public MainClass(){

        loops:

        Scanner input = new Scanner(System.in);


        System.out.println("First Number: ");
        int number1 = input.nextInt();
        System.out.println("Second Number: ");
        int number2 = input.nextInt();
        System.out.println("Operator (+, -, /, *)");
        String operation = input.next();
        String cont = input.next();

        int total;

        if(operation.equals("+")){
            total = number1 + number2;
            System.out.println(total);
        }
        if(operation.equals("-")){
            total = number1 - number2;
            System.out.println(total);
        }
        if(operation.equals("*")){
            total = number1 * number2;
            System.out.println(total);
        }
        if(operation.equals("/")){
            total = number1 / number2;
            System.out.println(total);
        }

        System.out.println("Continue? Y/N: ");
        if (cont.equalsIgnoreCase("n")){
            break loops;
        }
    }

    public static void main(String[] args) {
        new MainClass();


    }

}

3 个答案:

答案 0 :(得分:0)

您需要使用循环。标签确实存在,你只是没有正确使用它们。标签基本上可以命名循环,以便您可以中断/继续特定的循环。

答案 1 :(得分:0)

请参阅下面的固定类(还有另一个问题 - 使用cont),以下代码适用于我:

import java.util.Scanner;    

public class MainClass {

    public MainClass(){

        Scanner input = new Scanner(System.in);

        while(true){
            System.out.println("First Number: ");
            int number1 = input.nextInt();
            System.out.println("Second Number: ");
            int number2 = input.nextInt();
            System.out.println("Operator (+, -, /, *)");
            String operation = input.next();

            int total;
            if(operation.equals("+")){
                total = number1 + number2;
                System.out.println(total);
            }
            else if(operation.equals("-")){
                total = number1 - number2;
                System.out.println(total);
            }
            else if(operation.equals("*")){
                total = number1 * number2;
                System.out.println(total);
            }
            else if(operation.equals("/")){
                total = number1 / number2;
                System.out.println(total);
            }
            else{
                System.out.println("Undefined input!"); 
            }
            System.out.println("Continue? Y/N: ");
            String cont = input.next();
            if (cont.equalsIgnoreCase("n")){
                 break;
            }
        }
    }

    public static void main(String[] args) {
            new MainClass();
    }
}
顺便说一句,我不喜欢在构造函数中做这些事情,也许这只是我的个人品味,但我宁愿在一个方法中定义它(静态或非静态 - 由你决定)并从{调用该方法{1}}。

答案 2 :(得分:0)

您的代码首先需要在每个切换案例中使用中断语句。其次,如果使用的话,标签不能应用于变量声明。这就解答了为什么您在使用Scanner时出错。我建议您使用do-while循环是一个入口控制循环,语法就像这样

   do
   {
      //code you want to execute,will get executed at least once 
   }

   while(boolean condition);

您可以将开关案例放在do部分中,并且用户是否想要继续将在while部分中作为布尔条件。试试吧!