Java-月和天?
首先,我一直在寻找任何接近我的问题,但我找不到任何东西。我不是一个很好的程序员,我刚刚开始玩它一点,我对它的兴趣正在增长很多 我在想,如果我能用简单易懂的语言编写一个basic程序,用一个月和一天的“计算器” 比如,如果我有一个系统输出,上面写着:Java-月和天?,java,time,Java,Time,首先,我一直在寻找任何接近我的问题,但我找不到任何东西。我不是一个很好的程序员,我刚刚开始玩它一点,我对它的兴趣正在增长很多 我在想,如果我能用简单易懂的语言编写一个basic程序,用一个月和一天的“计算器” 比如,如果我有一个系统输出,上面写着:Write month number,我会输入11,然后在月份中写一个日数,有人写27,它会说日期正确 但是,如果它问我月份,我会键入6,如June,然后我写31,如它将打印的天数,即第6个月没有第31天 我想保持它的简单,这样我就可以像基本语言一样理
Write month number
,我会输入11
,然后在月份中写一个日数,有人写27
,它会说日期正确
但是,如果它问我月份,我会键入6
,如June
,然后我写31
,如它将打印的天数,即第6个月没有第31天
我想保持它的简单,这样我就可以像基本语言一样理解它,而不是太难!我只是个新手
谢谢大家的帮助。在日期课上,一月的第一个月是“0”,零。所以你认为六月和你写6,但一定是5;作为
January 0
February 1
March 2
April 3
May 4
June 5
如果你只是想完成这项工作,我建议你去看一看,或者也许
如果你对自己学习如何做更感兴趣,这里有一个方法建议:
硬编码数组,如
int[] daysInMonths = { 31, 27, 31, ... };
然后使用以下内容进行检查:
// Get month and day from user
Scanner s = new Scanner(System.in);
int month = s.nextInt();
int day = s.nextInt();
int monthIndex = month - 1; // since array indices are 0-based
if (1 <= day && day <= daysInMonths[monthIndex])
print ok
else
print does not exist
//从用户处获取月份和日期
扫描仪s=新的扫描仪(System.in);
整月=s.nextInt();
int day=s.nextInt();
int monthIndex=月份-1;//因为数组索引是基于0的
if(1利用Calendar类的功能是一种更好的方法
int day = 31;
int month = 6; // JULY
Calendar calendar = Calendar.getInstance();
if(month < calendar.getActualMinimum(Calendar.MONTH)
|| month > calendar.getActualMaximum(Calendar.MONTH))
System.out.println("Error - invalid month");
else
{
calendar.set(Calendar.MONTH, month);
if (day < calendar.getActualMinimum(Calendar.DAY_OF_MONTH)
|| day > calendar.getActualMaximum(Calendar.DAY_OF_MONTH))
{
System.out.println("Error - invalid day for month");
}
else
{
System.out.println("Date is correct");
}
}
}
int-day=31;
整月=6;//七月
日历=Calendar.getInstance();
如果(月<日历.getActualMinimum(日历.月)
||月>日历.获取实际最大值(日历.月))
System.out.println(“错误-无效月份”);
其他的
{
calendar.set(calendar.MONTH,MONTH);
如果(天<日历.获取实际最小值(日历.月的第天)
||day>calendar.getActualMaximum(calendar.day\u OF_MONTH))
{
System.out.println(“错误-月份无效日”);
}
其他的
{
System.out.println(“日期正确”);
}
}
}
您需要注意的是,日历当前将1月视为0月。此程序应该可以让您继续
import java.util.*;
class Date {
public static void main(String[] args) {
int[] days = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
System.out.print("Enter a month number and a day number (separate using \';\':_");
Scanner sc = new Scanner(System.in).useDelimiter(";");
int month = sc.nextInt();
int day = sc.nextInt();
sc.close();
System.out.println((day == days[month - 1]) ? "Date correct!" : "Date incorrect: Month " + month + " does not have day " + day);
}
}
太长,读不下去了
java.time
现代方法使用java.time类来取代麻烦的旧Date
/Calendar
类
使用枚举
当然,二月的最后一天取决于闰年。因此,如果你想精确,你需要使用
关于java.time
该框架内置于Java8及更高版本中。这些类取代了麻烦的旧日期时间类,如,&
该项目现已启动,建议迁移到类
要了解更多信息,请参阅.和搜索堆栈溢出以获取许多示例和解释。规范为
从哪里获得java.time类
- ,及以后
- 内置的
- 标准JavaAPI的一部分,带有捆绑实现
- Java9添加了一些次要功能和修复
- 及
- 大部分java.time功能都在中向后移植到Java6和Java7
-
- 该项目专门为Android采用了ThreeTen Backport(如上所述)
- 看
该项目用额外的类扩展了java.time。该项目是将来可能添加到java.time的一个试验场。您可能会在这里找到一些有用的类,如、、。对不起,伙计,我受不了所有这些编辑过的打字错误。哈哈!感谢您的修复,我已经研究了一段时间如何编写这个程序了现在,我似乎失去了打字的能力。这是我编写的代码,我知道它很糟糕。公共类Date{public static void main(String[]args){System.out.println(“write in month number:”);int month;month=7;if(month 12){}System.out.println(“month”“没有这样的日子”);}}}}}}如果做实际工作而不是做家庭作业或练习,要知道这种行为主要是在enum中实现的。我也是。它总是让人困惑……现在我们有了日历,这使一切变得更简单,也更复杂和困惑:)记住这一点很重要,但用户仍然可以在6月份输入6
,必须由程序将其转换为正确的内部数字。我建议将BufferedReader更改为Scanner。@Aoobe OK,但是否有具体原因?行越短,可读性越好,1行而不是9行(!)感谢阅读整数。感谢大家的回复,我很惭愧我仍然不懂基本知识。我正在尝试运行你的代码,但我似乎无法让它正常运行。你的课程日期,是不是应该更改,因为我的类名不同,并且我在某些行中出现错误,你能尝试运行它吗?再次感谢你你的时间。@Sebastian哪些行导致了错误?我运行了它,没有得到任何错误。
Month.of( 6 ).maxLength()
Month month = Month.of( 6 ) ; // Months numbered sanely, 1-12 for January-December.
if( dayOfMonthInput > month.maxLength() ) {
… bad input
}
YearMonth ym = YearMonth.of( 2017 , 2 ) ;
if( dayOfMonthInput > ym.lengthOfMonth() ) {
… bad input
}