【发布时间】:2021-06-08 16:06:11
【问题描述】:
问题是这样的:
创建一个 while 循环,该循环将使用一个计数器执行 12 次以下代码,该计数器从 1 开始,每次循环递增 1。
在 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;
}
}
此代码正确输出所有其他值,但不输出一月。
请问,我该怎么办?
【问题讨论】:
-
问题是在循环顶部增加 numOfMonth,然后再使用它:
while(numOfMonth++ <= 12){...}。一种解决方案是将“while”更改为“do”循环。另一种解决方案是更改为while(numOfMonth <= 12),并将numOfMonth++移动到循环的底部。 -
numOfMonth++将在您输入switch之前增加您的变量,因此它永远不会是1。切换后进行增量。 -
您可以改用索引变量。这将使您的数组和开关大小写保持一致。
标签: java switch-statement