我正处于Java 7软件设计学习开关()的开头,并且做... while()和什么不是。
当我在Intelli J IDEA 13中编译并运行程序时,它编译并运行正常,但是当语句完成时,什么都不会中断。
例如,当程序运行时,在案例2中,当我输入3个等级(90,90,90,-1)后输入-1时,它给出了平均值(270),但随后重复...
它应该断开并返回到开关菜单的开头。即使我在菜单中输入3,它也只是显示“No Code Here ...”到无穷大,即使有一个break语句(即使break语句已经过时)。
import java.util.Scanner;
public class TestingPlatform {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("Enter 1 to set percentage of total for new grades, 2 to enter new grades, 3 to get average, and 4 to quit: ");
int choice = input.nextInt();
do {
switch (choice) {
case 1:
System.out.println("Enter percent to multiply by: ");
double percent = input.nextDouble();
System.out.println("You entered " + percent);
break;
case 2:
int total;
int gradeCounter;
int grade;
double average;
total = 0;
gradeCounter = 0;
System.out.println("Enter grade or -1 to quit: ");
grade = input.nextInt();
while (grade != -1) {
total = total + grade;
gradeCounter = gradeCounter + 1;
System.out.println("Enter grade or -1 to quit: ");
grade = input.nextInt();
}
if (gradeCounter != 0) {
average = (double) total / gradeCounter;
System.out.printf("\nTotal of the %d grades is %d\n", gradeCounter, total);
System.out.printf("Class average is %.2f\n", average);
} else
System.out.println("No grades were entered.");
break;
case 3:
System.out.println("No code here yet....");
break;
}
} while (choice != 4);
}
}
答案 0 :(得分:5)
您输入一次,然后在输入不是4时循环。由于输入永远不会改变,这是永远的。
交换机内的break
只是跳出switch
。然后你继续你的循环。
把这些行:
System.out.println("Enter 1 to set percentage of total for new grades, 2 to enter new grades, 3 to get average, and 4 to quit: ");
choice = input.nextInt();
在do
循环内,不在它之外。然后,每次循环时都会要求输入新的输入。
您必须在循环外声明choice
,因为您在底部的while
中引用它。
将此行放在do
循环上方:
int choice;
答案 1 :(得分:0)
因此,它总是会再次循环并再次点击开关的原因是因为您再也不会更改choice
的值。 break
语句只是突破switch
语句,而不是循环本身。完成switch
后,您需要再次询问用户是否要选择其他选项,或者是否要输入4来退出。
break
陈述只会突破最内层的......群体?声明?我不确定正确的单词是什么,但它只会突破一个级别,而不是一直都是。
只是为了说出来,永远记住你有一个循环的四个部分:Initialization,Condition,Body和Changer。
初始化:在条件中为变量分配其初始值;这可能发生在do...while();
的情况下循环内部,并且可能有多个位置
条件:决定你的循环是否会继续的部分
正文:反复循环的代码
更换者:(这是最经常错过的,我注意到的)一个点或点,其中你的条件中的变量的值已经改变;可能有多个位置和多个变量受到影响