0

所以我完全是 Java 的菜鸟,并且正在尝试使用计算器。下面的代码是我到目前为止所拥有的。问题是代码在我添加标签“循环:”之前一直有效,在添加标签后,扫描仪由于某种原因出现错误。我想要循环标签,以便用户可以选择(代码底部的 if 语句)是否继续使用计算器。任何帮助,将不胜感激。

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();


    }

}
4

3 回答 3

0

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

于 2013-08-23T20:56:58.823 回答
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();
    }
}

顺便说一句,我不喜欢在构造函数中做这些事情,也许这只是我个人的喜好,但我宁愿在一个方法中定义它(静态或非静态 - 由你决定)并从main.

于 2013-08-23T20:57:56.770 回答
0

您的代码首先需要在每个 switch case 中都有一个break语句。其次,如果使用的标签不能应用于变量声明。这回答了为什么 Scanner 会出错。我建议你使用一个 do-while 循环,它是一个入口控制循环,语法是这样的

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

   while(boolean condition);

您可以将您的 switch case 放在 do 部分中,用户是否要继续将在 while 部分中作为您的布尔条件。试试吧!

于 2013-08-23T21:05:59.230 回答