[英]Switch statement won't break
我正在學習Java 7軟件設計的開始switch()並做... while()而不是什么。
當我在Intelli J IDEA 13中編譯並運行該程序時,它可以編譯並正常運行,但是在語句完成后不會中斷任何操作。
例如,當程序在第2種情況下運行時,當我輸入3個等級(90、90、90,-1)后輸入-1時,它會給出平均值(270),但隨后會重復...
它應該會中斷並返回到切換菜單的開頭。 即使我在菜單上輸入3,即使使用break語句(即使break語句已過時),它也只會顯示“ No Code Here ...”為無窮大。
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);
}
}
您只獲取一次輸入,然后在輸入未為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;
因此,它總是會再次循環並再次按下開關的原因是,您再也不會更改choice
的值了。 break
語句僅脫離switch
語句,而不是循環本身。 完成switch
您需要再次詢問用戶是否要選擇其他選項,或者是否要輸入四個退出選項。
break
語句只會跳出最里面的...組? 聲明? 我不知道正確的詞是什么,但是它只會分解出一個層次,而不是全部。
只是為了說一下,請始終記住循環包含四個部分:初始化,條件,主體和轉換器。
初始化:為條件中的變量分配初始值; 在do...while();
的情況下,這可能會在循環內發生do...while();
而且可能有多個位置
條件:決定循環是否繼續的部分
正文:不斷循環的代碼
換器:(這是我注意到的最常錯過的地方)一個或多個斑點,您的狀態中的變量的值正在更改; 可能有多個位置和多個變量受到影響
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.