题目:想控制台输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: "# ",原因为分割的元字符串给错了