java - Java switch 循环中断问题
问题描述
我从 Java 开始,找到了一个我正在努力解决的 switch 任务。希望您能以正确的方式指出我。用户可以输入字符串 1, 1-, 2, 2-, 3, 3-, 4, 4- 或 5,其值可以是 1 到 10。switch 用于将 1 转换为 1.0, 1- 到1.5、2 到 2.0、2- 到 2.5 等,但是我只需要存储它使用的 1 或 0,但不能是布尔值,因为我需要对其进行一些数学运算。并且这个开关应该重复给定的重复次数。这应该在不使用数组的情况下完成。所以我想到了创建一堆 9 个声明来为每个 1、1- 等存储 1 或 0,以及另外 9 个来存储它们对应的值。只要我只运行一次就可以了,但是当我进入循环时,它会变得混乱而无法正常工作。我觉得这是我对休息的误解,但我只是不明白。谢谢
循环情况下的输出如下所示: Enter Grade 1- Enter stock for 1-: 3 Enter grade Invalid gradeEnter grade
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int goods = 5;
int grade1 = 0;
int grade15 = 0;
int grade2 = 0;
int grade25 = 0;
int grade3 = 0;
int grade35 = 0;
int grade4 = 0;
int grade45 = 0;
int grade5 = 0;
int stock1 = 0;
int stock15 = 0;
int stock2 = 0;
int stock25 = 0;
int stock3 = 0;
int stock35 = 0;
int stock4 = 0;
int stock45 = 0;
int stock5 = 0;
for( int i = 1; i <= goods; i++ ){ //start of for
System.out.println("Enter grade"); // grade input
String select1 = (sc.nextLine());
switch (select1) { //here starts switch
case "1":
grade1 = 1;
System.out.print("Enter stock for 1: ");
stock1 = sc.nextInt();
break;
case "1-":
grade15 = 1;
System.out.print("Enter stock for 1-: ");
stock15 = sc.nextInt();
break;
case "2":
grade2 = 1;
System.out.print("Enter stock for 2: ");
stock2 = sc.nextInt();
break;
case "2-":
grade25 = 1;
System.out.print("Enter stock for 2-: ");
stock25 = sc.nextInt();
break;
case "3":
grade3 = 1;
System.out.print("Enter stock for 3: ");
stock3 = sc.nextInt();
break;
case "3-":
grade35 = 1;
System.out.print("Enter stock for 3-: ");
stock35 = sc.nextInt();
break;
case "4":
grade4 = 1;
System.out.print("Enter stock for 4: ");
stock4 = sc.nextInt();
break;
case "4-":
grade45 = 1;
System.out.print("Enter stock for 4-: ");
stock45 = sc.nextInt();
break;
case "5":
grade5 = 1;
System.out.print("Enter stock for 5: ");
stock5 = sc.nextInt();
break;
default:
System.out.print("Invalid grade");
} // end of switch
} //end of for
// test output of values for further use
System.out.println (grade1);
System.out.println (grade15);
System.out.println (grade2);
System.out.println (grade25);
System.out.println (grade3);
System.out.println (grade35);
System.out.println (grade4);
System.out.println (grade45);
System.out.println (grade5);
System.out.println();
System.out.println (stock1);
System.out.println (stock15);
System.out.println (stock2);
System.out.println (stock25);
System.out.println (stock3);
System.out.println (stock35);
System.out.println (stock4);
System.out.println (stock45);
System.out.println (stock5);
}
解决方案
推荐阅读
- c++ - 如何使用实值函数参数进行编译时错误检查?
- css - FontAwesome 5 反应,悬停时可见图标
- velo - 你如何在 Wix 中自定义悬停框形状?
- spring-security - 如何在 Spring HttpSecurity 中检查 ROLE_ADMIN 以获取 restful 服务?
- javascript - Momentjs 显示多个时区的相同时间
- python-2.7 - 如何计算以相同后缀(单词结尾)结尾的单词数?
- google-compute-engine - 共享 VPC 互连
- python - 您可以使用 tweepy python 获取的推文数量是否有最大限制?
- vba - VBA for Outlook - 使用右更改主题行
- c++ - CMake 找不到 CUDA:“找不到 cmake 模块文件:CMakeDetermineCUDACompiler.cmake”