创建Java程序以返回上一天,当前和下一天

时间:2013-12-19 13:35:51

标签: java

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

本程序分配必须遵循的准则如下:

一个。设定一天。

B中。打印一天。

℃。回归这一天。

d。第二天回来。

电子。返回前一天。

F。通过在当天添加特定日期来计算并返回当天。例如,如果当天是星期一,我们添加四天,则返回的日期是星期五。同样,如果今天是星期二,我们加13天,则返回的日期是星期一。

-G。添加适当的构造函数。

小时。编写方法的定义以实现类Day的操作,如A到G中所定义。

予。编写一个程序来测试课堂上的各种操作。

*的 修改 *** 我写的这个新代码非常出色,直到我将这一天设置为星期一。我遇到的问题是在previousDay方法中。我正在尝试添加一个if / else语句但是如果没有收到outOfBounds Exception错误我无法正确编译它。在String数组中实现此目的的好方法是什么?

我写的更新代码是为了完成这个程序任务:

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));

}

}

感谢您的时间!

亚当

7 个答案:

答案 0 :(得分:2)

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

您的代码中存在一些错误:

public Day setNameDay(String Day) {
    Day = Days;
    return this;
}

您在此处执行的操作是在方法的参数Days中保存Day值,该参数实际上什么都不做。

public void nextDay() {
    Day++;

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

如果低于8,为什么将日期设置为1?你应该使用:

    if (Day >8) {
        Day = 1;
    }

答案 1 :(得分:2)

  

“当前日期和第二天的值未正确打印。”

nextDay()没有打印声明

public void nextDay()
{
    Day++;

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

实际上你需要在Days有值之前调用setDay();

Day myDay = new Day();
myDay.setDay(1);
myDay.printDay();

你有一个类Day,int Day和String Days的事实对于正在阅读你的代码的人来说是完全混乱的。我很惊讶你甚至能够遵循它。考虑Java命名约定:变量名以小写字母开头。

答案 2 :(得分:2)

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

例如,看看这个:

public Day setNameDay(String Day) {
    Day = Days;
    return this;
}

不仅命名不好。 您认为这种方法实际上做了什么?

我强烈建议你再次参加课程,并在参数传递等主题出现时注意。

答案 3 :(得分:0)

您可以将Calendar 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]+"";

}
}

答案 4 :(得分:0)

尝试将您的方法更新为:

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

在这里,我没有向后移动到0指数,而是向前移动n - 1天以获得前一天。

答案 5 :(得分:-1)

你正试图重新发明已经存在的东西,这会让你的生活更加艰难。

只需将数据存储在Calendar对象中即可。使用dateAdd添加和删除天数,读取结果。

答案 6 :(得分:-1)

import java.util.*;
import java.lang.*;
import java.io.*;
class Main {
public static void main(String[] args) {
        Day day = new Day();
        day.setDay(2);
        day.printDay();
        day.returnDay1(13);
        day.returnDay();
        day.nextDay();
        day.previousDay(); }}

class Day {

int setday = 0;
int returnday=0;
String x,y;
static String[] days = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};

void printDay() {

if(setday < 7) {
    System.out.println("The Day is " + days[setday]); }

else
System.out.println("Invalid set of day"); }

void setDay(int dayset) {

setday = dayset; }

void returnDay1(int returnday1) {

returnday = returnday1; }

void returnDay() {

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(" "); }

void nextDay() {

if(setday < 7) {

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

else

System.out.println(" "); }

void previousDay() {

if(setday < 7) {

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

else

System.out.println(" "); } }