从命令行得到5个整数,放入一整型数组,然后打印输出,要求:如果输入数据不为整数,要捕获Integer.parseInt()产生的异常,显示“请输入整数”,捕获输入参数不足5个的异常(数组越界),显示“请输入至少5个整数”。
代码如下: 
public class PrintNum { public static void main(String[] args) {
int num[] = null;
int i = 0;
try {
for (i = 0; i < 5; i++)
num[i] = Integer.parseInt(args[i]);
} catch (NumberFormatException e) {
System.out.println("请输入整数");
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println(" 请至少输入5个数");
}
for (i = 0; i < args.length; i++)
System.out.println(args[i]);
}
}===================================================================================
结果直接是请至少输入5个数 ,而我想是在键盘输入后再判断

解决方案 »

  1.   

    public static void main(String[] args) {
    Integer[] num = new Integer[5];
    int i = 0;
    try {
    for (i = 0; i < 5; i++)
    num[i] = Integer.parseInt(args[i]);
    for (i = 0; i < args.length; i++)
    System.out.println(args[i]);
    }
    catch (NumberFormatException e) {
    System.out.println("请输入整数");
    } catch (ArrayIndexOutOfBoundsException e) {
    System.out.println(" 请至少输入5个数");
    }
    }
      

  2.   

    LZ的意思是,还没开始输入,程序就直接输出“请至少输入5个数”了吧?你用的args是启动程序的时候传给main的参数。比如 java PrintNum a b c
    args会被初始化成["a", "b", "c"]。如果是 java PrintNum
    args就是一个长度为0的数组。 程序当然会产生ArrayIndexOutOfBounds。如果需要交互式的输入,可以查一下java.util.Scanner 和 java.io.Console的用法。
      

  3.   

    5L正解.args是启动时传的数据.
      

  4.   

    int num[] = null;
    um[i] = Integer.parseInt(args[i]);能这样用吗?
      

  5.   

    用命令行运行,
    先转到PrintNum.class文件所在的路径
    Java PrintNum 1 2 3 4 5
      

  6.   

    public static void main(String[] args) {
    Scanner s = new Scanner(System.in);
    System.out.println("请至少输入5个数,以逗号分隔:"); String nums = s.nextLine();
    String[] num=nums.split(",");
    //任意你需要的判断
    for(int i=0;i<5;i++){
    System.out.println(num[i]);
    }
    }