一、关于Scanner类
C语言中存在一个scanf函数用于输入,而Java则使用Scanner类来实现从键盘输入。 标准输入(从键盘输入)格式为:
Scanner input = new Scanner(System.in); (开启从标准设备实现输入)
int num = input.nextInt();(从键盘输入数值给num变量。nextXxx() ,表示使用Xxx类型输入,如未有Xxx,则默认为字符串输入)
既然有开启输入就必须要有结束输入,input.close();(关闭从键盘输入),一次简单的从键盘输入数据就实现了。如果想要连续输入的话可以使用
while (input.hasNext()) {//必须为hasNext(),才可使用Ctrl + Z结束输入
num = input.nextInt();
System.out.println(num);
}
while循环体里的input.hasNext()存在的作用是为了当完成输入时采用Ctrl+Z结束输入。只有input.hasNext()才可以使用Ctrl+Z结束输入。测试完整程序如下:
public static void main(String[] args) {
Scanner input = new Scanner(System.in);//开启从标准设备实现输入
int num = input.nextInt();//nextXxx() ,表示使用Xxx类型输入,如未有Xxx,则默认字符串输入
System.out.println(num);
while (input.hasNext()) {//必须为hasNext(),才可使用Ctrl + Z结束输入
num = input.nextInt();
System.out.println(num);
}
input.close();//关闭键盘
}
二、关于Calendar类
Calendar类是Java中对日期处理的工具类,使用Calendar显示日期有两种方式,分别是复杂版和简单版。
对于复杂版,首先我们可以使用它的静态方法Calendar.getInstance();来得到今天的日期信息。之后则可以通过Calendar提供的get方法得到具体的日期信息并显示,如下所示:
int year = today.get(Calendar.YEAR);
System.out.println(year);
int month = today.get(Calendar.MONTH);//Calendar类的month的计算从0到11月
System.out.println(month);
int date = today.get(Calendar.DATE);
System.out.println(date);
int hour = today.get(Calendar.HOUR);
System.out.println(hour);
// int hour = today.get(Calendar.HOUR_OF_DAY);
// System.out.println(hour);
int minute = today.get(Calendar.MINUTE);
System.out.println(minute);
int second = today.get(Calendar.SECOND);
System.out.println(second);
int millisecond = today.get(Calendar.MILLISECOND);//毫秒
System.out.println(millisecond);
输出结果为:
需要注意的点是,在Calendar类中月份的显示是从0到11的,使用Calendar可以获取到毫秒级的日期信息。对于小时而言Calendar.HOUR获取到的是12小时制的,而get(Calendar.HOUR_OF_DAY)得到的是24小时制的小时信息。
对于简单版日期显示:
SimpleDateFormat sdf = new SimpleDateFormat("YYYY年MM月dd日 HH时mm分ss秒");//YY年的话会没有世纪信息,即只会有22年
system.out.println(sdf.format(today.getTime()));
对于YYYY年MM月dd日 HH时mm分ss秒,如果使用YY年的话则没有世纪信息,由于月与毫秒的英文首字母均为m,则大写代表月份,小写代表毫秒。使用格式转化即可得到想要的结果:
对于Calendar类还有一种应用是获取已知年月的最大天数,这个功能可以准确获得某年某月的最大天数,不用再计算是平年还是闰年的问题。实现如下:
year = 2010;
month = 2;
today.set(year, month-1, 1);//设置为二月的第一天
int Maxday = today.getActualMaximum(Calendar.DAY_OF_MONTH);//获得二月的总天数
System.out.println(Maxday);
首先使用set方法设置日期为已知年月的第一天,之后利用getActualMaximum方法得到已知月份的最大天数。结果得到28,即2010年二月总共有二十八天。