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

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

我在尝试创建形状计算器时遇到了另一个障碍,这次它使用循环和我的 Switch/Case 语句允许用户 select 他们希望计算的形状。

我正在尝试制作这样的计算器。用户 selects 1 表示三角形,他们计算并说他们现在希望 select5 之后立即计算一个圆,然后再次进行另一个圆计算,无论他们希望多少次,然后能够移动到另一个形状。说 6 代表一个球体。

到目前为止,我已经尝试使用 While (True) 循环,但似乎一旦我创建了一个 selection,我就陷入了这种情况,无法继续 select另一个形状来计算或 select 情况下 closes/exits 程序。

我已将我的程序缩减为以下示例,删除了制作形状所需的代码,因为形状本身不是此处的程序。它试图让我的用户选择范围更灵活,我想你可以这么说。

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
}

你必须每次都读取决策输入(无限循环)
这应该有效:

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
}

问题: 您只接受一次决策输入,因为它是在无限 while 循环之外编写的。因此在无限循环执行过程中,decision永远不会改变,每次都会执行相同的case,给人一种程序卡在case中的感觉,其实根本不是这样。

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

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