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: "# ",原因为分割的元字符串给错了

原文地址:https://www.cnblogs.com/tjlgdx/p/5994420.html