我正在为我的入门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));
}
}
感谢您的时间!
亚当
答案 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(" "); } }