您的位置:首页 > 编程语言 > Java开发

java Scanner练习

2017-12-25 13:31 232 查看
基于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方法进行判断,如需使用,请增加相应的判空。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java Scanner