如果特定字符串为true,我试图返回一个整数。 (为此我不想使用数组)。
public String calcNextDay()
{
if (day == "Sunday"){
return 0; // If day is Sunday return 0
}else if (day == "Monday"){
return 1; // If Day is Monday return 1
}else if (day == "Tuesday"){
return 2; // If day is tuesday return 2
}else if(day == "Wednesday"){
return 3; // If day is Wednesday return 3
}else if(day == "Thursday"){
return 4;// If day is Thursday return 4
}else if (day == "Friday"){
return 5;// If day is Friday return 5
}else if(day == "Saturday"){
return 6;// if day is Saturday return 6
}
}
我也尝试了这个,但是返回dayValue会出现错误,指出它无法转换为String(即使我不想将其转换为字符串)
public String calcNextDay()
{
int dayValue = 0;
if (day == "Sunday"){
dayValue = 0; // If day is Sunday return 0
}else if (day == "Monday"){
dayValue =1; // If Day is Monday return 1
}
return dayValue;
}
我做错了什么?
根据评论,我将一些代码更改为
Public String calcNextDay()
{
int dayValue = 0;
if (day.equals("Sunday")){
dayValue = 0;
}else if (day.equals("Monday")){
dayValue = 1;
}else if (day.equals("Tuesday")){
dayValue = 2;
}return dayValue;
}
错误:不兼容的类型:int无法转换为String } return dayValue;
谢谢,我通过了那个问题,然后我得到了错误 Day.java:178:错误:无法从静态上下文引用非静态变量dayValue System.out.println(“您的日期存储为”+ testday.setDay()+ dayValue); ^ 1错误
我的main()是静态的,但我的dayValue不是
答案 0 :(得分:1)
所有字符串比较都是错误的,在Java中它们必须这样做:
if (day.equals("Sunday"))
换句话说,使用equals()
来测试相等性,而不是==
。更好的是,将文字值放在第一位是一个好习惯,以防其他值为null
。这就是我的意思:
if ("Sunday".equals(day))
而且,您正在尝试在函数内返回int
,并将返回类型指定为String
,因此请更改此内容:
public String calcNextDay()
......对此:
public int calcNextDay()
答案 1 :(得分:0)
在Java中,字符串不与==进行比较。 正确的方法是使用方法equals
。
if ("Sunday".equals(day))
使用"Yoda convention"进行安全比较:即使day为null,比较也不会失败。
至于返回整数,如果不是最佳实践,则使用大量if else
。有更好的方法:
switch (day) {
case "Monday" : return 0;
case "Tuseday": return 1;
...
}
此外,由于您要返回int
,因此您的功能结果类型也应为int