多重IF声明;个月

时间:2015-05-27 21:13:32

标签: java if-statement

我知道这可能是一个非常愚蠢的问题,我知道我应该为此导入一个类,但我真的想知道以下代码中的错误是什么。我正在上Java课程,我真的很想得到一些帮助。

int m = 1;
 String month;
        if(int m = 1){ 
           month = "January";
        }else if(int m = 2){ 
           month  = "February";   
        }else if(int m = 3){ 
           month  = "March"; 
        }else if(int m = 4){ 
           month  = "April"; 
        }else if(int m = 5){ 
           month  = "May"; 
        }else if(int m = 6){ 
           month  = "June"; 
        }else if(int m = 7){ 
           month  = "July";
        }else if(int m = 8){ 
           month  = "August";
        }else if(int m = 9){ 
           month  = "September"; 
        }else if(int m = 10){ 
           month  = "October"; 
        }else if(int m = 11){ 
           month  = "November"; 
        }else if(int m = 12){ 
           month  = "December"; 
        }

我一直在

*./Root/Main.java:16: error: '.class' expected
        if(int m = 1){ 
               ^*

字符串名称有问题吗?

4 个答案:

答案 0 :(得分:2)

您正在尝试在if条件中定义新的整数变量m。 你应该这样做:

int m = 1;
String month;
if( m == 1)
{ 
       month = "January";
}

等。注意我已经删除了int,并将=更改为= =(即等式检查,而不是赋值)

答案 1 :(得分:1)

您的if语句正在重新定义变量m。比较应如下所示:if (m == 1)。更正后的代码为:

int m = 1;
String month;
if(m == 1){ 
    month = "January";
}else if(m == 2){ 
    month  = "February";   
}else if(m == 3){ 
   month  = "March"; 
}else if(m == 4){ 
   month  = "April"; 
}else if(m == 5){ 
   month  = "May"; 
}else if(m == 6){ 
   month  = "June"; 
}else if(m == 7){ 
   month  = "July";
}else if(m == 8){ 
   month  = "August";
}else if(m == 9){ 
   month  = "September"; 
}else if(m == 10){ 
   month  = "October"; 
}else if(m == 11){ 
   month  = "November"; 
}else if(m == 12){ 
   month  = "December"; 
}

答案 2 :(得分:1)

=是赋值操作,==是相等比较运算符。 将if(int m = 1){更改为if(int m == 1){

如果你想摆脱多个if-else语句,我的建议是:

int m = 1;
String month = "";

// stores months names in order
String[] months = {"January", "February", "March"....}
// gets the corresponding name by index
month = months[m-1];

答案 3 :(得分:1)

为什么.class?

期望.class的原因是因为Java期望找到您提供int类型的值。但是,类型不能用作值。

有一个值以int开头的唯一可行方法是当我们访问其.class属性时:编译器假定你想这样做。

内联声明

有些地方可以放置内联变量声明,例如在for循环中。 <{1}}之后的内容应该是一个表达式,因此禁止声明。

使用相等if运算符

否则,您会将==的右侧(LHS)指定给=,这不是您想要的。

不要使用这么多m

由于您使用的是整数,因此可以轻松使用switch语句:

if

switch (m) { case 1: month="January"; break; case 2: month="February"; break; ... } 形式切换一系列整数通常被编译为直接访问,就像使用数组一样。 当然,您也可以定义一个静态的最终月份数组,并使用a..b作为索引来访问它。

编辑:非常有趣的是,Java documentationm语句的示例正在处理您的确切问题。

枚月

你说过,&#34;我应该导入一个类#34;并且有效地,正如haifzan所暗示的那样,你只需要使用existing enum