Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java while循环中的开关用例_Java_While Loop_Switch Statement - Fatal编程技术网

Java while循环中的开关用例

Java while循环中的开关用例,java,while-loop,switch-statement,Java,While Loop,Switch Statement,我正在尝试用java中的开关用例编写简单的计算器(一体机)。到目前为止,我提出了以下代码。然而,我被while循环卡住了。我想在每个案例执行后继续显示主菜单,直到用户决定退出程序 public static void main(String[] args) { Scanner s=new Scanner(System.in); System.out.println("Main Menu:"); System.out.println("1. Addition");

我正在尝试用java中的开关用例编写简单的计算器(一体机)。到目前为止,我提出了以下代码。然而,我被while循环卡住了。我想在每个案例执行后继续显示主菜单,直到用户决定退出程序

public static void main(String[] args) 
{   
    Scanner s=new Scanner(System.in);
    System.out.println("Main Menu:");
    System.out.println("1. Addition");
    System.out.println("2. Substraction");
    System.out.println("3. Multipication");
    System.out.println("4. Division");
    System.out.println("Enter your choice: ");
    int i=s.nextInt();

    System.out.println("ENTER FIRST NUMBER ");
    int a=s.nextInt();

    System.out.println("ENTER SECOND NUMBER ");
    int b=s.nextInt();

    int result=0;

    switch(i)
    {
        case 1:
            result=a+b;
            break;
        case 2:
            result=a-b;
            break;
        case 3:
            result=a*b;
            break;
        case 4:
            result=a/b;
            break;

        default:
            System.out.println("Wrong Choice.");

    }

    System.out.println("Answer is "+result);
    }
}

以上代码工作正常。执行用户选择的选项后,程序结束。我想重复主菜单。

添加一个
,同时像这样循环:

public static void main(String[] args) {

        // Moved this outside the while loop as davidxxx pointed out +1
        Scanner s = new Scanner(System.in);


        while (true) {
            System.out.println("Main Menu:");
            System.out.println("1. Addition");
            System.out.println("2. Substraction");
            System.out.println("3. Multipication");
            System.out.println("4. Division");
            System.out.println("Enter your choice: ");
            int i = s.nextInt();

            System.out.println("ENTER FIRST NUMBER ");
            int a = s.nextInt();

            System.out.println("ENTER SECOND NUMBER ");
            int b = s.nextInt();

            int result = 0;//'result' will store the result of operation

            switch (i) {
                case 1:
                    result = a + b;
                    break;
                case 2:
                    result = a - b;
                    break;
                case 3:
                    result = a * b;
                    break;
                case 4:
                    result = a / b;
                    break;

                default:
                    System.out.println("Wrong Choice.");

            }

            System.out.println("Answer is " + result);

            System.out.println("Go again?");
            String goAgain = s.next();
            if (!goAgain.equals("y")) {
               break;
            } 

        }
    }
试试这个:

import java.util.Scanner;

public class Calculator {

    private static final String EXIT = "EXIT";

    public static void main(String[] args) {

        Calculator calc = new Calculator();
        Scanner s = new Scanner(System.in);
        while (true) {
            String res = calc.runCalc(s);
            if (res.equals(EXIT)) {
                break;
            } else {
                System.out.println(res);
            }
        }
    }

    private String runCalc(Scanner s) {
        System.out.println("Main Menu:");
        System.out.println("1. Addition");
        System.out.println("2. Substraction");
        System.out.println("3. Multipication");
        System.out.println("4. Division");
        System.out.println("5. Exit");
        System.out.println("Enter your choice: ");
        int i = s.nextInt();

        if (i == 5) {
            return EXIT;
        }

        System.out.println("ENTER FIRST NUMBER ");
        int a = s.nextInt();

        System.out.println("ENTER SECOND NUMBER ");
        int b = s.nextInt();

        int result = 0;// 'result' will store the result of operation

        switch (i) {
        case 1:
            result = a + b;
            break;
        case 2:
            result = a - b;
            break;
        case 3:
            result = a * b;
            break;
        case 4:
            result = a / b;
            break;

        default:
            return "Wrong Choice.";

        }

        return "Answer is " + result;
    }
}

实现这一点的方法不止一种,您可以使用

  • while循环
  • 边做边循环
  • 循环
  • 我认为做而循环更适合你的情况。因为无论用户是否想继续,您都必须继续一次(在循环false之前)。您不想使用另一个变量退出循环

    public static void main(String[] args) 
    {   
        Scanner s=new Scanner(System.in);
    
        int result=0;
    
        do{
            System.out.println("Main Menu:");
            System.out.println("-1. complete and calculate");
            System.out.println("1. Addition");
            System.out.println("2. Substraction");
            System.out.println("3. Multipication");
            System.out.println("4. Division");
            System.out.println("Enter your choice: ");
    
            int i=s.nextInt();
            if(i ==-1){
                System.out.println("Answer is "+result);
                return;
            }
            System.out.println("ENTER FIRST NUMBER ");
            int a=s.nextInt();
    
            System.out.println("ENTER SECOND NUMBER ");
            int b=s.nextInt();
    
    
            switch(i)
            {
                case 1:
                    result=a+b;
                    break;
                case 2:
                    result=a-b;
                    break;
                case 3:
                    result=a*b;
                    break;
                case 4:
                    result=a/b;
                    break;
                default:
                    System.out.println("Wrong Choice.");
                    break;
            }
        }while(true);
    
    }
    

    谢谢你,史蒂文。我想在没有用户确认的情况下显示主菜单。所以我对它做了一点修改。以前不知道使用while这样的方法。再次感谢。回答正确+1,但不需要在每次迭代中创建一个Scanner实例。应该在while语句之前移动它。没问题!只要你能操作
    布尔值,你就可以让程序在任何时候/任何地方运行或退出。@steven你只需
    中断
    循环并删除
    启动
    变量。@holi java很好的编辑!我只是习惯于在我需要一段时间或做一个while循环时创建布尔值:)我们可以知道你在这里遇到的困难是什么吗?至少您可以尝试将while循环合并到您的代码中,我们将帮助您检查它。也谢谢您。我们的教授还没讲完。这就是我想做的第一件事。布尔值看起来也很不错。我很快就要研究布尔型。@GaryM读了这篇文章,你可以找到很多关于布尔型数据类型的教程。不要等到先生教你@GaryM我认为这是实现任务的简单方法。问题是,这段代码只在用户退出程序时计算结果。在此之前进行的任何其他计算均未显示。另外,在我看来,使用一个单独的变量来检查用户是否想要退出程序是一个很好的做法。我一直了解到,为他们需要做的工作生成好的变量名对于代码的可读性/理解性更好。几个月后,您可能不知道使用了哪个变量
    i
    ,或者使用了多少次以及用于哪些不同的任务。。。无论如何,我认为OP已经很好地退出了:)他并没有要求在每次迭代中看到答案。我只是遵循他的密码。而且这不是我的变量命名约定。但是
    i
    可以更改为
    choice
    quit也是一种选择。但我同意你的观点,即使用不同的变量来区分计算和计算。我试着制作这个简单的程序和这个关于如何循环的问题。我只是试着保持这个简单和易于理解的方式。