java Scanner练习
来源:互联网 发布:新浪pop3服务器 端口 编辑:程序博客网 时间:2024/06/03 12:28
基于Scanner的功能进行如下练习
一、需求:计算两个日期之间一共经历了多少天
二、代码实例
package twoHundredTest;
import java.util.Scanner;
//计算两个日期之间的总天数
public class ScannerText {
static int[] monthListMore = {1,3,5,7,8,10,12};
static int[] monthListNormal = {4,6,9,11};
static int specialMonth = 2;
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
boolean isContinu = true;
while(isContinu){
isContinu = false;
System.out.println("请输入开始日期");
String start = scanner.next();
System.out.println("请输入结束日期");
String end = scanner.next();
System.out.println("总天数为:"+count(start, end));
isContinu = true;
}
scanner.close();
}
public static int count(String start,String end){
if(start == null || "".equals(start)||end == null ||"".equals(end)){
System.out.println("输入有误");
return 0;
}
start = start.replace(" ", "");
end = end.replace(" ", "");
int allDays = 0;
int startYear = Integer.parseInt(start.split("年")[0]);
int startMonth = Integer.parseInt(start.split("年")[1].split("月")[0]);
int startDay = Integer.parseInt(start.split("月")[1].split("日")[0]);
int endYear = Integer.parseInt(end.split("年")[0]);
int endMonth = Integer.parseInt(end.split("年")[1].split("月")[0]);
int endDay = Integer.parseInt(end.split("月")[1].split("日")[0]);
if(startYear > endYear || (startYear == endYear && startMonth > endMonth)
||(startYear == endYear && startMonth == endMonth && startDay > endDay)){
System.out.println("输入有误");
return 0;
}
int yearSize = endYear - startYear;
for(int i =0;i< yearSize;i++){
int year = startYear +i;
if(year!= 0&&(year % 4== 0 && year%100 != 0 || year %400 == 0)){
allDays+=366;
}else{
allDays +=365;
}
}
int endMonthSize = endMonth;
int endMonthDays = 0;
for(int i=0;i<endMonthSize;i++){
endMonthDays+=monthDaysNumber(1+i, endYear);
}
int startMonthSize = startMonth;
int startMonthDays = 0;
for(int i=0;i< startMonthSize;i++){
startMonthDays+=monthDaysNumber(1+i, startYear);
}
return allDays+endMonthDays+endDay-startMonthDays-startDay;
}
public static int monthDaysNumber(int month,int year){
int moreSize = monthListMore.length;
for(int i =0; i< moreSize ;i++){
if(monthListMore[i] == month){
return 31;
}
}
int normalSize = monthListNormal.length;
for(int i =0;i< normalSize;i++){
if(monthListNormal[i] == month){
return 30;
}
}
if(year!= 0 &&(year % 4 == 0 && year % 100 != 0 || year % 400 == 0)){
return 29;
}else{
return 28;
}
}
}
三、请注意:没有对split方法进行判断,如需使用,请增加相应的判空。