java 练习题

时间:2023-03-09 22:42:27
java 练习题

题目:想控制台输1-3个整数,按顺序为年,月,日。#号键结束输入。若输入一个整数,则为年份,程序判断是闰年还是平年;若输入两个整数,则为年份和月份,程序将输出该年的月份的天数;若输入3个整数;则为年,月,日,程序输出这一天是星期几。若未提供任何数据或大于3个,则提示错误。

public class Page121 {

    /**
* 项目案例
* nzx10.24,
* @param args
*/
public static int getMonthDay(String leaps,int month){
String small="4,6,9,11";
String mon=String.valueOf(month);
int flag=small.indexOf(mon);
int monthDay;
if(month==2){
monthDay=(leaps.equals( "闰年"))?29:28;
}else{
monthDay=(flag!=-1)?30:(31);
}
return monthDay;
}
public static void main(String[] args) {
System.out.println("请输入3个以内的数字,以#结束");
Scanner sc=new Scanner(System.in);
String str="";
String leap = null;
int year=0;
StringBuffer inputStr=new StringBuffer(str);
while(!(str=sc.next()).equals("#")){
inputStr.append(str+";");
}
System.out.println(inputStr);
String temp=inputStr.toString();
String[] array=temp.split(";"); for(int i=0;i<array.length;i++){
System.out.println(array[i]);
} if(array.length<1||array.length>3){
System.out.println("输入有误");
}else{
year=Integer.valueOf(array[0]).intValue();
leap=((year%4==0&&year%100!=0)||year%400==0)?"闰年":"平年";
}
if(array.length==1){
System.out.println("今年是"+leap);
}else if(array.length==2){
int months=Integer.parseInt(array[1]);
int monthDay=getMonthDay(leap, months);
System.out.println(months+"月有"+monthDay+"天");
}else if(array.length==3){
int day=Integer.parseInt(array[2]);
System.out.println("今天是星期"+day);
}
}
}

结果显示:

请输入3个以内的数字,以#结束
2012
2
#
2012;2;
2012
2
2月有29天

一开始写完,只要输入#,就提示错误Exception in thread "main" Java.lang.NumberFormatException: For input string: "# ",原因为分割的元字符串给错了