繁体   English   中英

在我的形状计算器Java程序中使用带有Switch / Case语句的循环

[英]Using a Loop with Switch/Case statements in my shape calculator Java program

在创建形状计算器的过程中,我遇到了另一个障碍,这一次它在Loop中使用了Switch / Case语句,允许用户选择他们想要计算的形状。

我正试图使我的计算器这样。 用户为“三角形”选择1,他们进行计算,并说现在希望立即选择5来计算一个“圆”,然后再次进行另一个圆的计算,但是希望进行多次,然后才能移动到另一个形状。 说6个球体。

到目前为止,我已经尝试过使用While(True)循环,但是似乎一旦做出选择,我就陷入了这种情况,无法继续选择其他形状来计算或选择关闭/退出程序的情况。

在下面,我将程序简化为一个示例,以省去制作形状所需的代码,因为形状本身不是此处的程序。 我想您可能会说,它试图使我的用户选择范围更加灵活。

 Scanner scan = new Scanner(System.in); //take user input int decision = scan.nextInt(); loop: while (true) { switch (decision) { case 1: //example break; case 2: //example and so on break; case 3: break; case 9: // Quit System.out.println("You decided to Quit"); break loop; default: // Wrong decision System.out.println("Select a number between 1 and 8 to make a decision or 9 to Quit"); } //exit program code here } 

在循环中,您需要提示并阅读下一个选择。 您显示的代码会读取一个选项来设置decision ,但此后再也不会更改。

在循环内移动scan.nextInt()

loop: while (true) {
  int decision = scan.nextInt();

  switch (decision) { 
    case 1:
      //example
      break;
    case 2:
      //example and so on
      break;
    case 3:
      break;
    case 9:
      // Quit
      System.out.println("You decided to Quit");
      break loop;
    default:
      // Wrong decision
      System.out.println("Select a number between 1 and 8 to make a decision or 9 to Quit");
  }
  //exit program code here
}

问题:您仅接受一次决策输入,因为它是在无限while循环之外编写的。 因此,在执行无限循环期间,决策将永远不会改变,并且每次执行相同的案例时,都会给人留下程序卡在案例中的印象,而无论如何都不行。

解决方案:使用无限while循环移动输入语句。

while (true) {
int decision = scan.nextInt();
//rest of the code 
....
....
}

您必须每次都阅读决策输入(无限循环)
这应该工作:

Scanner scan = new Scanner(System.in); //take user input

loop: while (true) {
  int decision = scan.nextInt();
  switch (decision) { 
    case 1:
      //example
      break;
    case 2:
      //example and so on
      break;
    case 3:
      break;
    case 9:
      // Quit
      System.out.println("You decided to Quit");
      break loop;
    default:
      // Wrong decision
      System.out.println("Select a number between 1 and 8 to make a decision or 9 to Quit");
  }
  //exit program code here
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM