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方法进行判断,如需使用,请增加相应的判空。

阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 杀手2 杀手王 杀手躲猫猫 边境杀手2 背影杀手 全职杀手 杀手皇后 艾斯杀手 杀手狙击 好h好女杀手 杀手5 白灵杀手 代号杀手 杀手 代号47 杀手47图片 我是杀手 杀手手机版 杀手破解版 杀手狙击手 杀手13 谁是杀手 杀手图片 杀手歌曲 杀手手游 杀手英语 杀手3 杀手1 杀手下载 杀手7 杀手歌词 杀手online 杀手英文 杀手杀手 杀手5赦免 杀手4 这个杀手 杀手组织 超级杀手 全能d杀手 杀手训练营 杀手系统