java - 如何解决 Java 中的 switch case 错误?
问题描述
问题是这样的:
创建一个 while 循环,该循环将使用从 1 开始并每次通过循环递增 1 的计数器执行以下代码 12 次。
在 while 循环中,创建一个 switch 语句,该语句将打印出一年中每个月份的天数。使用贯穿功能,以便您只有一份包含 31 天的所有月份的打印报表。不要担心闰年。
也打印出月份的名称。您可以从上一个实验室复制并粘贴您的月份名称数组,以帮助简化此操作。
这是我的答案:
int numOfMonth = 1;
String[] months ={
"January", "February", "March", "April", "May", "June", "July",
"August" , "September" , "October" , "November", "December"};
int[] daysOfMonths = {28, 30, 31};
// String output;
while(numOfMonth++ <= 12){
int index = numOfMonth -1;
switch(numOfMonth){
case 2:
System.out.println(months[index] + " has " + daysOfMonths[0] + " Days.");
break;
case 4:
case 6:
case 9:
case 11:
System.out.println(months[index] + " has " + daysOfMonths[1] + " Days.");
break;
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
System.out.println(months[index] + " has " + daysOfMonths[2] + " Days.");
break;
default:
break;
}
}
此代码正确输出所有其他值,除了它不输出一月。
请问,我该怎么办?
解决方案
使用for
循环而不是while
循环:
for (int i=1; i <= numOfMonth; ++i) {
int index = i - 1;
switch (i) {
// current switch statement
}
}
while
正如所写的,循环的问题在于后缀将numOfMonth
在循环 evem 的第一次迭代开始之前递增到 2:
while(numOfMonth++ <= 12){
因此,一月总是会被跳过。
推荐阅读
- python - 使用 SMTP 在 python 中向老师发送电子邮件时出现 Nonetype 错误
- c++ - 如何在codelite上运行当前文件?
- node.js - 产生与 CPU 内核一样多的 Node.js 进程并在它们之间进行负载平衡
- ubuntu - 如何在 Ubuntu 中将 mosquitto 更新到最新版本
- python - 如何在 selenium python 中从网络获取 javascript 和 css 请求的状态
- python - 从一个函数返回变量以在另一个函数中使用 python
- javascript - 如何在html页面上显示用tinyMCE编写的内容
- python-3.x - 如何迭代 MotorCursor pymongo.cursor.Cursor 对象?
- php - 通过中间表检索值
- python - Django 无法从网络文件共享文件夹中获取文件