如何解决Java中的交换机案例错误?

如何解决Java中的交换机案例错误?,java,switch-statement,Java,Switch Statement,问题是这样的: 创建一个while循环,该循环将使用一个计数器执行以下代码12次,该计数器从1开始,每次通过循环递增1 在while循环中,创建一个switch语句,该语句将打印出一年中每个月的天数。 使用下拉功能,以便在包含31天的所有月份中只有一份打印对账单。不要担心闰年 打印出月份的名称。您可以从上一个实验室复制并粘贴月份名称数组,以帮助简化此操作 以下是我的答案: int numOfMonth = 1; String[] months ={ "January"

问题是这样的:

创建一个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;
        }
    }
int numOfMonth=1;
字符串[]个月={
“一月”、“二月”、“三月”、“四月”、“五月”、“六月”、“七月”,
“八月”、“九月”、“十月”、“十一月”、“十二月”};
int[]daysOfMonths={28,30,31};
//字符串输出;

while(numOfMonth++使用
for
循环,而不是
while
循环:


for(inti=1;i将numOfMonth的增量移动到switch语句的内部


while(具体来说,赋值似乎需要一个
while
。在这种情况下,do/while可能是可以接受的。或者增加循环体中的计数器而不是条件。或者至少将初始值偏移-1:)@SergioTulentsev我不同意,我认为你读错了代码。
while
循环显然似乎在一年中的12个月内迭代,
switch
语句及其12个条件似乎验证了这一点。是的,12个条件,但第一个条件被跳过,正如你正确指出的。我的所有三个建议估计是正确的。例如:也不确定你到底不同意什么。@SergioTulentsev我实际上是爱尔兰公民,信不信由你。通过我的外祖母(她100年前出生在科克郡)捡到的。问题是在使用它之前,你在循环的顶部增加了个月:
(numOfMonth++
numOfMonth++
将在您进入
开关之前增加您的变量,因此它永远不会
1
。在您的开关之后进行增量。您可以改为使用索引变量。这将使数组和开关大小写保持一致。甚至在开关之后效果更好。更好的是:丢失“index”总之,OP不需要“numOfMonth”和“index”:“numOfMonth”应该足够了。只需1)循环底部(而不是顶部)的增量,2)记住数组是基于0的。
while(numOfMonth++ <= 12){