Java 循环将无法正确执行

Java 循环将无法正确执行,java,for-loop,Java,For Loop,我正在为类编写一个程序,循环似乎没有正确执行。它总是将i的值返回为0。代码的其余部分似乎与广告一样工作,i只是索引值没有增加 public class Day { String strDay; private int d = 0; private String[] Days = {"SUNDAY", "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY"}; String day;

我正在为类编写一个程序,循环似乎没有正确执行。它总是将
i
的值返回为0。代码的其余部分似乎与广告一样工作,
i
只是索引值没有增加

public class Day {
    String strDay;
    private int d = 0;
    private String[] Days = {"SUNDAY", "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY"};
    String day;

    public Day() {
        return;
    }

    public Day(String strDay) {// this is my issue. I think I am going about this constructor all wrong
        for (int i = 0; i < Days.length; i++) {
            if (strDay.equalsIgnoreCase(Days[i]))
                d = i;
            return;
        }
    }

    public int getDay() {
        return d;
    }

    public void nexDay() {
        int next;
        if (d < 6) {
            next = (this.d) + 1;
            System.out.println("Next Day is :" + Days[next]);
        } else {
            next = 0;
            System.out.println("Next Day is :" + Days[next]);
        }
    }

    public void prevDay() {
        int prev = 0;

        if ((d > 0) && (d < 6)) {
            prev = (this.d) - 1;
            System.out.println("previous day is " + Days[prev]);
        } else
            System.out.println("previous day id " + Days[6]);
    }

    public int calcDay(int num) {
        int newDay;
        this.d = d + num;
        newDay = this.d % 7;
        System.out.println("calc day is" + Days[d]);
        return newDay;
    }

    public void print() {
        System.out.println("day is " + Days[d]);
    }

    public static void main(String[] args) {
        String day;
        Day Callmethod = new Day();
        Scanner console = new Scanner(System.in);
        System.out.println("enter a day of the week");
        day = console.nextLine();
        Callmethod.print();
        Callmethod.nexDay();
        Callmethod.prevDay();
        Callmethod.getDay();
    }
}
公共课日{
字符串标准日;
私有int d=0;
私人字符串[]天={“星期日”、“星期一”、“星期二”、“星期三”、“星期四”、“星期五”、“星期六”};
弦日;
公众日{
返回;
}
公众日(String-strDay){//这是我的问题。我想我在这个问题上完全错了
对于(int i=0;i0)和&(d<6)){
prev=(这个d)-1;
System.out.println(“前一天是”+前几天];
}否则
System.out.println(“前一天id”+天[6]);
}
公共整数计算日(整数){
国际新日;
d=d+num;
newDay=this.d%7;
系统输出打印项次(“计算日为”+天[d]);
新年归来;
}
公开作废印刷品(){
System.out.println(“天为”+天[d]);
}
公共静态void main(字符串[]args){
弦日;
Day Callmethod=新的一天();
扫描仪控制台=新扫描仪(System.in);
System.out.println(“输入一周中的某一天”);
day=console.nextLine();
Callmethod.print();
Callmethod.nexDay();
Callmethod.prevDay();
Callmethod.getDay();
}
}
嗯,这个

 Day Callmethod = new Day();
正在调用空构造函数。不是带循环的构造函数(它采用
字符串
)。此外,Java变量以小写字母开头(
Callmethod
看起来像一个
class
)。我想你在找类似的东西

 Day day = new Day("SUNDAY");
此外,您的
if
需要大括号,或者
返回将被调用,而不执行任何操作(除非它在第一个条目上匹配),如

for(inti=0;i那么,这个

 Day Callmethod = new Day();
正在调用您的空构造函数。不是带循环的构造函数(它采用
字符串
)。此外,Java变量以小写字母开头(
Callmethod
看起来像
)。我想您正在寻找类似

 Day day = new Day("SUNDAY");
此外,您的
if
需要大括号,或者
返回将被调用,而不执行任何操作(除非它在第一个条目上匹配),如

for(int i=0;i尝试更改此选项:

public Day(String strDay)/// this is my issue. I think I am going about this constructor all wrong
  {
      for(int i=0;i<Days.length;i++){

          if (strDay.equalsIgnoreCase(Days[i]))
              d = i;
          return;

      }
  }
publicsday(stringstrday)///这是我的问题。我想我对这个构造函数的理解是错误的
{
对于(int i=0;i尝试更改此项:

public Day(String strDay)/// this is my issue. I think I am going about this constructor all wrong
  {
      for(int i=0;i<Days.length;i++){

          if (strDay.equalsIgnoreCase(Days[i]))
              d = i;
          return;

      }
  }
publicsday(stringstrday)///这是我的问题。我想我对这个构造函数的理解是错误的
{
对于(int i=0;i
公共日(字符串标准日){
对于(int i=0;i
如果我理解得很清楚,这就行了。如果没有,请向我解释for循环的目标是什么。然后将
return
语句放在下一个括号外。

公共日(String strDay){
对于(int i=0;i

如果我理解得很清楚,这就行了。如果没有,请告诉我for循环的目标是什么。然后将
return
语句放在下一个括号的外面。

String
使用
==
进行相等性测试不是一个好主意。另外,
return
不是
If
主体的一部分。谢谢您的info、 我想我在轻松驾驶后发现了问题。我的scanner变量是day,但我正在尝试将strDay与数组进行比较。如何将它们进行相同的比较?是否可能strDay为null,可以编译为0,从而在第一次出现时使其为真?
String
使用
=
进行相等性测试>这不是一个好主意。另外,
return
不是
if
正文的一部分。感谢您提供的信息。我想我在轻松驾驶后发现了我的问题。我的scanner变量是day,但我正在尝试将strDay与数组进行比较。如何将它们进行相同的比较?是否可能strDay为null,这可能是在编译因此,在第一次出现时是否为0?