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方法进行判断,如需使用,请增加相应的判空。
一、需求:计算两个日期之间一共经历了多少天
二、代码实例
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_数组_猜数游戏_练习_封装_02_ArrayDaemon.java,Array练习,Random练习,Scanner练习
- JAVA_数组_猜数游戏_练习_封装_02_ArrayDaemon.java,Array练习,Random练习,Scanner练习
- java Scanner + String练习
- Java练习(for循环,Scanner工具类)
- Java第二章动手动脑练习
- java 中的Scanner(非常详细不看后悔)
- java练习
- java练习——设计一个中年类(可对输入的姓名年龄进行校验)
- java例程练习(数据流)
- java例程练习(打印流)
- java封装类练习
- 《黑马程序员》java笔记->基本数据类型包装类及自动拆箱装箱原理,数组排序练习字符串切割
- 【JAVA语言程序设计基础篇】--图形--练习绘制时钟
- JAVA中静态static的练习
- java--练习day02
- java基础代码练习
- java例程练习(多线程[sleep()方法])
- Java 基础五:Scanner 类读取文件
- Java中Scanner的使用方法
- JAVA_面向对象_练习_封装_02_EncapsulationDaemon02.java