2015-02-23 155 views
-1

我做了一个计算器,我有一个问题。我想要两个'Do While'循环:一个在最后重新启动程序,另一个用户输入与'1,2,3或4'不同的任何东西'Java:两个'尽管'循环

您可以在顶部看到两个变量。

摘要:我想有两个循环。一个用于重新启动程序,另一个用于在出现错误后重新启动以选择标志。

public static void main(String[] args) { 
    double result = 0; // multiple variable , switch to choose 
    int retryAfterErrorSign = -1; 
    int retry = -1; 


    System.out.println("Firt number: "); 
    Scanner sc = new Scanner(System. in); 
    double nbre1 = sc.nextDouble(); 

    System.out.println("Second number: "); 
    double nbre2 = sc.nextDouble(); 

    System.out.println("1 : Addition"); 
    System.out.println("2 : Soustraction"); 
    System.out.println("3 : Multiplication"); 
    System.out.println("4 : Division"); 
    retry = sc.nextInt(); //Loop to rechoose number. 

    int sign = sc.nextInt(); 
    switch (sign) { 

     case 1: 
      if (sign == 1) result = nbre1 + nbre2; 
      System.out.println("The result is " + result); 
      break; 
     case 2: 
      if (sign == 2) result = nbre1 - nbre2; 
      System.out.println("The result is " + result); 
      break; 
     case 3: 
      if (sign == 3) result = nbre1 * nbre2; 
      System.out.println("The result is " + result); 
      break; 
     case 4: 
      if (sign == 4) result = nbre1/nbre2; 
      System.out.println("The result is " + result); 
      break; 
     default: 
      if (sign != 1 && sign != 2 && sign != 3 && sign != 4) System.out.println("Error , number not recognize"); 
      System.out.println("Retry (0/1)"); 
      retryAfterErrorSign = sc.nextInt(); //loop to rechoose sign; 
    } 
} 
+1

有什么问题吗? – immibis 2015-02-23 20:45:01

+1

丢掉你的if(sign ... lines。switch..case语句已经处理了这个。 – fjf2002 2015-02-23 20:49:13

+0

“...非常酷,我的自我感到骄傲...”,“...爱你......” - 非常值得关于您的问题的信息。 – Andremoniy 2015-02-23 20:52:10

回答

1

Do-While-Loop听起来像是来自BASIC。在Java中,写

while(condition) { 

} 

do { 

} while(condition); 

注语义差异:第一示例测试条件之前进入体内;第二个例子在执行正文后测试

+0

不是真的刚开始的Java 2天前哈哈从未编程。 – Bobocuillere 2015-02-23 21:38:20

2

什么你谈论常常被称为“游戏圈”。它基本上将整个应用程序封装在一个循环中,该循环检查是否存在某种终止条件或者只是重新启动整个应用程序。在Java类的伪代码的结构可能是这个样子:

bool keepPlaying = true; 
while (keepPlaying) { 
    // everything goes in here. 
    // if the program should ever end, set keepPlaying to false. 
} 

里面这个循环,你将有你的“游戏逻辑”(在这种情况下,“游戏”只是一个计算器,但概念是一样的)。这种逻辑可能是这个样子:

String input = getInputFromUser(); 
while (!isValid(input)) { 
    input = getInputFromUser(); 
} 
// perform the logic on the input 

那么巧合还有另外一个循环,但它是从完全独立的,未知的总体“游戏循环”,这带动了整个界面。

每个逻辑抽象使得一个良好的边界,以提取从代码的方法。所以,你的整个main()方法可能是只是“游戏圈”和环可能只有一条语句,playGame();或类似这种事情。然后方法将包含应用程序逻辑,它在内部具有一些本身称为进一步抽象的循环(例如getInputFromUser(););

+0

谢谢你会尝试。 – Bobocuillere 2015-02-23 21:28:01

0

有一些方法,另一种方法是把你的代码里面while(true){... check for a specific condition if true {exit while}... }

while(true){ 
System.out.println("Firt number: "); 
     Scanner sc = new Scanner(System.in); 
     double nbre1 = sc.nextDouble(); 

     System.out.println("Second number: "); 
     double nbre2 = sc.nextDouble(); 

     System.out.println("1 : Addition"); 
     System.out.println("2 : Soustraction"); 
     System.out.println("3 : Multiplication"); 
     System.out.println("4 : Division"); 
     retry = sc.nextInt();//Loop to rechoose 
     if (retry !=1 && retry !=2 && retry !=3 && retry !=4){ 
      break; 
     } 
     //....code 
} 
+0

你用布尔是什么意思?我是一个初学者也 – Bobocuillere 2015-02-23 21:28:50

+0

是的,当然在大多数场景田地检查它的结果是一个布尔值的条件。 – jfun 2015-02-23 21:31:56

+0

谢谢你,将测试。 – Bobocuillere 2015-02-23 22:22:21