【发布时间】:2019-04-02 06:45:08
【问题描述】:
0
我正在为我的学校作业制作一个 Date 类,它基本上做了一些基本功能,就像 API Date 一样。不允许任何方法与 Java 的 API Date 类关联,除了设置为当前本地时间的构造函数之一。然后我做了一个方法来改变基于输入选项的格式。代码工作得很好,但是格式方法的月输出计算错误。也许我对数组的逻辑做错了,但不知道如何使它正确。 例如:如果我输入 4/2/2019 并选择选项 B,那么它会打印“December 2 2019”而不是“April”
我尝试了 month = 0 和 1 的循环,但它不起作用。
import java.util.*;
public class Date
{
// declare needed variables
private int day;
private int month;
private int year;
/**
* Default constructor to set the date info to the current date
*/
public Date()
{
// I have trouble assign Date using the Java API Date class
Date d1 = new Date();
Calendar cal = Calendar.getInstance();
cal.setTime(d1);
day= cal.get(Calendar.DAY_OF_MONTH);
month = cal.get(Calendar.MONTH);
year = cal.get(Calendar.YEAR);
}
/**
* Overloaded constructor to set the date info based on user input
* @param int inMonth to input month value
* @param int inDay to input day value
* @param int inYear to input year value
*
*/
public Date( int inMonth, int inDay, int inYear)
{
//set all the inputs into suitable variables
day = inDay;
month = inMonth;
year = inYear;
}
public String getDate(char format)
{
//String Array for option B
String[] mArray = {"January","Febuary","March","April","May","June","July","August","September","October","November","December"};
String dayString = new String();
//Switch code with param input format option and return the String based on it
switch(format)
{
case 'A':
dayString = month+"/"+day+"/"+year;
break;
case 'B':
for(month = 1;month<mArray.length;month++)
{
dayString = mArray[month]+" "+day+" "+year;
}
break;
}
return dayString;
}
/**
* ToString method to return date info
* @return String of Date
*/
public String toString()
{
//Return value of Date in String
return month+"/"+day+"/"+year;
}
}
【问题讨论】:
-
仅供参考,
java.util.Date、java.util.Calendar和java.text.SimpleDateFormat等非常麻烦的日期时间类现在是 legacy,被 Java 8 及更高版本中内置的 java.time 类所取代.见Tutorial by Oracle。
标签: java date for-loop format date-formatting