如果string ==“sting text”返回int

时间:2014-08-19 03:03:02

标签: java string int

如果特定字符串为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不是

2 个答案:

答案 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语句 switch (day) { case "Monday" : return 0; case "Tuseday": return 1; ... }
  • 创建一个包含日期名称的数组,并在数组中搜索特定日期。返回找到的项目的索引

此外,由于您要返回int,因此您的功能结果类型也应为int