如何让循环停止

时间:2016-05-17 12:09:01

标签: java loops while-loop

我正在尝试为我的计算器程序停止循环,但我不允许使用break或system.exit。如何停止我的循环我只需要输入5作为菜单?如果我放入" n"如何让程序退出?对于问题,我想再次使用计算器吗?附:我正在使用Java。

public static void main (String args []) {
    String MainMenu = " Calculator Options \n\n1. Addition\n2" +
            " Subtraction\n3. Multiplication\n4. Division\n5. Exit";
    menu (MainMenu);

    while (true) {
       String YesorNo = JOptionPane.showInputDialog("Would You Like to Use the Calculator Again (y / n)? ");

       if (YesorNo.equals ("y")) {
           menu (MainMenu);
       }

       if (YesorNo.equals ("n")) {

       }
    }
}

public static int menu (String info) {
    String choice = JOptionPane.showInputDialog (info);
    if (choice.equals ("1"))
        return Addition();
    else if (choice.equals ("2"))
        return Subtraction();
    else if (choice.equals ("3"))
        return  Multiplication();
    else if (choice.equals ("4"))
        return  Division();
    else
        return 0;
}

2 个答案:

答案 0 :(得分:2)

使用break关键字。

if (YesorNo.equals ("n")) {
    break;
}

或者将条件放在while-loop中并使用关键字do

do {
    // code & blaaa .. blaaa & code
} while (YesorNo.equals("y"));

答案 1 :(得分:2)

回答你们两个问题:

您只需使用do-while循环并在其中包含两个条件。 但是,您目前的实施方案不会100%的时间都在运行。

原因是,您返回操作以及menu的结果。

首先,这就是你的循环的样子。

do {
   String YesorNo = JOptionPane.showInputDialog ("Would You Like to Use the Calculator Again (y / n)? ");
   int menuReturn = menu (MainMenu);
} while (YesorNo.equals("y") || menuReturn != 0);

如果它不在值menu内,那么0方法确实会返回0-4。但是当你的任何数学运算的结果是0时会发生什么?你也可以关闭计算器。此时,您可能希望更改menu的功能。

private static int result = 0;

public static int menu (String info) {
   String choice = JOptionPane.showInputDialog (info);
   if (choice.equals ("1")) {
       result = Addition();
       return 1;
   }
   else if (choice.equals ("2")) {
       result = Subtraction();
       return 1;
   }
   else if (choice.equals ("3")) {
       result = Multiplication();
       return  1;
   }  
   else if (choice.equals ("4")) {
       result = Division();
       return 1;
   }
   else if (choice.equals("5"))
       return -1;
   else 
       return 0;

您的循环设计现在会改变为以下内容。

do {
   String YesorNo = JOptionPane.showInputDialog ("Would You Like to Use the Calculator Again (y / n)? ");
   int menuReturn = menu (MainMenu);
   // Work with the result now
   if (menuReturn == 0) // invalid input;
} while (YesorNo.equals("y") || menuReturn != -1);

但为了使其完全符合OOP原则,您可能需要重写一些代码,然后在答案中显示。