0
我正在为我的学校作业创建一个 Date 类,它基本上执行一些基本功能,就像 API Date 一样。除设置为当前本地时间的构造函数之一外,不允许任何方法与 Java 的 API Date 类关联。然后我做了一个根据输入选项更改格式的方法。该代码工作得很好,但是格式方法的月份输出计算错误。也许我对数组的逻辑做错了,但不知道如何纠正。 例如:如果我输入 4/2/2019 并选择选项 B,那么它会打印“2019 年 12 月 2 日”而不是“4 月”
我尝试了 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;
}
}
最佳答案
这是选项 B 的代码:
for(month = 1;month<mArray.length;month++)
{
dayString = mArray[month]+" "+day+" "+year;
}
这会迭代从 1 到 11 的月份。因此,第一次循环会分配 2019 年 2 月 2 日
,下次该值将被 2019 年 3 月 2 日
覆盖,循环结束后,最后分配的值 2019 年 12 月 2 日
保留在那里。
使用循环是没有意义的。解决您的问题的基本方法是将其排除在外:
dayString = mArray[month] + " " + day + " " + year;
假设您的月份编号为 1 月(1 月)到 12 月(12 月),您将无法获得完全正确的数组元素,但您很快就会发现,所以我将其留给您自己修复。无论如何,您需要一个明确的决定:一月在您的类(class)中表示为 0 还是 1?
关于java - 将输入默认格式更改为 D 月,YYYY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55468470/