创建Java程序以返回前一天、当前天和第二天

创建Java程序以返回前一天、当前天和第二天,java,Java,我正在为我的java编程入门课程创建最后一个程序,我需要一些帮助。当前日期和第二天的值打印不正确。我已经一遍又一遍地阅读了我的代码,但我无法理解为什么它不能正常运行。非常感谢您的任何帮助/建议 我必须遵循的本课程作业指导原则如下: 确定日期 B.打印日期 C.当天返回 第二天回来 E.前一天返回 F.通过将某些天添加到当前天来计算并返回该天。例如,如果当前日期是星期一,我们加上四天,则返回的日期是星期五。同样,如果今天是星期二,加上13天,返回的日期是星期一 G.添加适当的构造函数 H.编写方法

我正在为我的java编程入门课程创建最后一个程序,我需要一些帮助。当前日期和第二天的值打印不正确。我已经一遍又一遍地阅读了我的代码,但我无法理解为什么它不能正常运行。非常感谢您的任何帮助/建议

我必须遵循的本课程作业指导原则如下:

确定日期

B.打印日期

C.当天返回

第二天回来

E.前一天返回

F.通过将某些天添加到当前天来计算并返回该天。例如,如果当前日期是星期一,我们加上四天,则返回的日期是星期五。同样,如果今天是星期二,加上13天,返回的日期是星期一

G.添加适当的构造函数

H.编写方法的定义,以实现从A到G中定义的上课日操作

I.编写一个程序,在上课日测试各种操作

*编辑*** 我编写的这段新代码在我将日期定为星期一之前效果非常好。我遇到的问题是在前一天的方法中。我正在尝试添加if/else语句,但如果不收到outOfBounds异常错误,就无法正确编译它。在字符串数组中实现这一点的好方法是什么

我为完成此程序任务而编写的更新代码:

public class Day {


int index;

static String[] days = {"Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"};


public Day(String currentDay) 
{

    for(int i = 0; i < days.length; i++) 
    {

        if(currentDay.equals(days[i])) 
        {

            index = i;

            return;
        }

    }

    System.out.println("Days is invalid");

}

public void printDay() 
{
    System.out.println("The Day is " + days[index]);

}


public String returnDay() 
{
    return days[index]; 

}


public String returnNextDay() 
{
    return days[(index + 1 )% days.length];

}


public String returnPreviousDay() 
{

if (days.length <= 1)

    return days[index + 6];


else return days[(index - 1)%days.length];  
}


public String whatDayIs(int i) 
{
    return days[(index + i)%days.length];

}


public static void main(String[] args) 
{
    Day day = new Day("Mon");

    day.printDay();

    System.out.println("Return Day: " + day.returnDay());

    System.out.println("Next Day: " + day.returnNextDay());

    System.out.println("Previous Day: " + day.returnPreviousDay());

    System.out.println(day.whatDayIs(7));

}
公共课日{
整数指数;
静态字符串[]天={“周一”、“周二”、“周三”、“周四”、“周五”、“周六”、“周日”};
公众日(字符串当前日)
{
对于(int i=0;i如果(days.length你试图重新发明一些已经存在的东西,这会让你的生活更艰难


只需将数据存储在日历对象中。使用dateAdd添加和删除日期,然后读取结果。

您正试图重新发明一些已经存在的东西,这让您的生活更加艰难


只需将数据存储在日历对象中。使用dateAdd添加和删除日期,读取结果。

首先,使用java命名约定。它使代码更清晰,更易于帮助

您的代码中有一些错误:

public Day setNameDay(String Day) {
    Day = Days;
    return this;
}
这里要做的是将
Days
值保存在方法的参数
Day
中,该参数实际上不起任何作用

public void nextDay() {
    Day++;

    if (Day <8)
        Day = 1;
    setDay(Day);
}

首先,使用java命名约定。它使您的代码更清晰,更易于帮助

您的代码中有一些错误:

public Day setNameDay(String Day) {
    Day = Days;
    return this;
}
这里要做的是将
Days
值保存在方法的参数
Day
中,该参数实际上不起任何作用

public void nextDay() {
    Day++;

    if (Day <8)
        Day = 1;
    setDay(Day);
}
“当前日期和第二天的值打印不正确。”

nextDay()
没有打印语句

public void nextDay()
{
    Day++;

    if (Day <8)
        Day = 1;
    setDay(Day);
    }
<>代码>你有一个类<代码>天< /C>,int >代码>天> />代码>和string <代码>天>代码>对于任何正在阅读你的代码的人来说都是完全混淆的。我很惊讶你甚至能遵循它。考虑java命名约定:变量名从小写开始。 “当前日期和第二天的值打印不正确。”

nextDay()
没有打印语句

public void nextDay()
{
    Day++;

    if (Day <8)
        Day = 1;
    setDay(Day);
    }

和你有一个类<代码>天> />代码>和<代码> >天> /代码>对于任何正在阅读你的代码的人来说都是完全混淆的。我很惊讶你甚至能遵循它。考虑java命名约定:变量名从小写开始。< /P> 你的代码充满了问题,问题来自阿德。ep不了解Java

例如,看看这个:

public Day setNameDay(String Day) {
    Day = Days;
    return this;
}
不好的不仅仅是命名。 你认为这个方法实际上有什么作用


我郑重建议您重新学习这门课程,并在出现参数传递等主题时予以注意。

您的代码充满了问题,这些问题源于对Java的深刻理解

例如,看看这个:

public Day setNameDay(String Day) {
    Day = Days;
    return this;
}
不好的不仅仅是命名。 你认为这个方法实际上有什么作用


我郑重建议您重新学习本课程,并在出现参数传递等主题时予以注意。

您可以使用带有日期的日历API。 试试下面的代码

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.GregorianCalendar;

public class CameoWebServiceClient {
public enum day {
    SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY
}

public static void main(String[] args) {

    // read day

    int lDay = 5;
    SimpleDateFormat date_format = new SimpleDateFormat("yyyyMMdd");
    System.out.println(date_format.format(new Date()));
    Calendar cal1 = date_format.getCalendar();

    cal1.set(Calendar.DAY_OF_WEEK, lDay);

    cal1 = setDay(cal1, lDay);
    System.out.println(""+curDay(cal1));
    System.out.println(""+nextDay(cal1));
    System.out.println(""+prevDay(cal1));


}

public static Calendar setDay(Calendar cal1, int lDay) {
    cal1.set(Calendar.DAY_OF_WEEK, (lDay));
    return cal1;
}

public static String curDay(Calendar cal1) {
    int i = cal1.get(Calendar.DAY_OF_WEEK)-1 ;
    i = i < 0 ? 6:i;
    return day.values()[i]+"";



}

public static String nextDay(Calendar cal1) {
    int i = cal1.get(Calendar.DAY_OF_WEEK);
    i = i > 6 ? 0:i;
    return day.values()[i]+"";

}

public static String prevDay(Calendar cal1) {
    int i = cal1.get(Calendar.DAY_OF_WEEK)-2;
    i = i < 0 ? 6:i;
    return day.values()[i]+"";

}
}
import java.text.simpleDataFormat;
导入java.util.Calendar;
导入java.util.GregorianCalendar;
公共类CameoWebService客户端{
公众普查日{
星期日、星期一、星期二、星期三、星期四、星期五、星期六
}
公共静态void main(字符串[]args){
//读书日
int lDay=5;
SimpleDataFormat日期\格式=新SimpleDataFormat(“yyyyMMdd”);
System.out.println(date\u format.format(new date());
Calendar cal1=日期\格式.getCalendar();
计算1.设置(日历日/周/日,lDay);
cal1=设定日(cal1,lDay);
系统输出打印项次(“+curDay(cal1));
系统输出打印项次(“+nextDay(cal1));
系统输出打印项次(“+prevDay(cal1));
}
公共静态日历设置日(日历cal1,int lDay){
计算1.设置(日历日/周(lDay));
返回cal1;
}
公共静态字符串curDay(日历cal1){
int i=cal1.get(日历。一周中的第二天)-1;
i=i<0?6:i;
返回日期。值()[i]+“”;
}
公共静态字符串nextDay(日历cal1){
int i=cal1.get(日历,一周中的一天);
i=i>6?0:i;
返回日期。值()[i]+“”;
}
公共静态字符串prevDay(日历cal1){
inti=cal1.get(日历.一周中的第二天)-2;
i=i<0?6:i;
返回日期。值()[i]+“”;
}
}

您可以使用带有日期的日历API。 请尝试以下代码。

if(setday < 7) { x = days[(setday + returnday )% days.length]; System.out.println("Return Day after "+String.valueOf(returnday)+ " days is " + x); } else System.out.println(" "); }
if(setday < 7) {

  y = days[(setday + returnday + 1 )% days.length];
  System.out.println("Next Day is " + y); }

else

System.out.println(" "); }
if(setday < 7) {

  y = days[(setday + returnday - 1 )% days.length];
  System.out.println("Previous Day is " + y); }

else

System.out.println(" "); } }
public String returnPreviousDay() {
  return days[(index + days.length - 1) % days.length]; 
}