【发布时间】:2020-09-17 23:37:46
【问题描述】:
我目前在处理我最近正在做的事情时遇到了问题。为了简短起见,我希望我的程序按以下方式运行:
-
用户输入一个数字,然后检查该数字是否为有效选项。如果它不是一个有效的选项,则会出现一条错误消息并让主菜单再次出现。
-
如果选择了一个有效的选项,一个 switch case 会接受选择的选项并运行每个 case 语句中的代码。
-
一旦代码在 switch-case 部分完成运行,它会循环回到顶部并重新显示主菜单,并且进程 1-3 将继续运行,直到用户选择选项 4 退出程序。
我似乎遇到的问题是,当我进入案例 1 时,它喜欢循环一段不打算循环的代码,并继续向数组中添加一个 Triangle 对象,这是这件作品:
if((side1 == 0 || side2 == 0 || side3 == 0))
{
// Problem with do-while loop begins here
triangleArray[trianglesAdded] = new Triangle();
System.out.println("Default triangle created");
trianglesAdded += 1;
}
其中 triangleArray 是一个大小为 100 的 Triangle 对象数组, trianglesAdded 跟踪实际添加到数组中的三角形的数量,并作为该数组索引的变量。由于它不断将 Triangle 对象添加到此数组中,因此我收到一个错误,因为该数组一旦达到其限制就不能再容纳任何 Triangle 对象,这意味着我也无法循环回到主菜单。
所以我的问题是:我怎样才能让它停止循环通过这部分(因为它应该只发生一次,并且一次只能将一个 Triangle 对象添加到数组中)还跑到可以转一圈,跑完后再次显示主菜单的地方?
完整代码如下:
do
{
while(validMenuOption == false)
{
System.out.println("1. Enter data for a new triangle.");
System.out.println("2. Print all triangles sorted by area, smallest to largest.");
System.out.println("3. Print only triangles with a specific color.");
System.out.println("4. Exit the program.");
System.out.print("\nPlease enter in a number to select an option: ");
menuOption = sc.nextInt();
if(menuOption >= 1 && menuOption <= 4)
{
validMenuOption = true;
}
else
{
System.out.println("Invalid menu choice. Please try again.\n");
validMenuOption = false;
}
if(menuOption == 1 && trianglesAdded == triangleArray.length - 1)
{
System.out.println("The triangle array has hit the max. You are unable to add more triangles.");
validMenuOption = false;
}
}
switch(menuOption)
{
case 1:
...
// If one, two, or all of the side lengths given are zero and the color of the triangle is 1, creates a default triangle
// with the sides being 1 and the color being 1
if((side1 == 0 || side2 == 0 || side3 == 0))
{
// Problem begins here
triangleArray[trianglesAdded] = new Triangle();
System.out.println("Default triangle created");
trianglesAdded += 1;
}
// If side lengths greater than zero were given, creates a triangle with the side lengths and color given
else
{
triangleArray[trianglesAdded] = new Triangle(side1, side2, side3, color);
System.out.println("Triangle created with specified size and color");
}
break;
case 2:
...
break;
case 3:
...
break;
case 4:
...
break;
default:
...
break;
}
} while(true);
【问题讨论】:
-
您发表了评论,下面的答案很有帮助。那么您是否可以通过单击绿色复选标记来接受它作为解决方案?
标签: java arrays switch-statement do-while