【问题标题】:How to print error if nothing is put in command line?如果命令行中没有任何内容,如何打印错误?
【发布时间】:2015-11-19 04:44:24
【问题描述】:

如果 java Rev 之后什么都没有,我需要打印这个语句“只输入一个三位数,第一个数字大于第三个数字。”

这没有被打印出来,但出现了一个错误,上面写着:

x-10-104-10-64:Assgn Katie$ javac Rev.java
x-10-104-10-64:Assgn Katie$ java Rev
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
    at Rev.main(Rev.java:9)

我需要解决什么问题?

这是我的代码:

public class Rev {  
    public static void main(String[] args) {
        int num = Integer.parseInt(args[0]);
        if (checkDigits(num)) {
            num = subtractNum(num);
            addNum(num);
        } else {
            System.out.println("Enter only a three digit number, with the first digit larger than the third");
        }
    }

    // checks if numbers are correct
    static boolean checkDigits(int number) {
        int reverse = reverseNum(number);
        if(number < reverse) {
            throw new Error("Reverse number needs to be less than the original number!");
        } else {
            return true;
        }
    }

    //reverses number
    static int reverseNum(int number) {
        int reverse = 0;
        while(number != 0) {
            reverse = (reverse*10)+(number%10);
            number = number/10;
        }
        return reverse;
    }

    // subtracts
    static int subtractNum(int number) {
        int reverse = reverseNum(number);
        int total = number - reverse;
        System.out.println("Reverse and subtract: ");
        System.out.println(number);
        System.out.println(reverse + " - ");
        System.out.println("---");
        System.out.println(total);
        System.out.println();
        return total;
    }

    // adds
    static int addNum(int number) {
        int reverse = reverseNum(number);
        int total = number + reverse;
        System.out.println("Reverse and add: ");
        System.out.println(number);
        System.out.println(reverse + " + ");
        System.out.println("---");
        System.out.println(total);
        return total;
    }
}

【问题讨论】:

    标签: java indexoutofboundsexception


    【解决方案1】:

    检查args 的长度。添加类似的东西

    if (args.length != 1) {
        System.err.println("Please provide a single argument.");
        System.exit(1);
    }
    

    main的开头。

    【讨论】:

      【解决方案2】:

      您正在尝试访问 args 数组的第 0 个元素,该元素可能不存在(如果程序在没有参数的情况下运行)。您应该在尝试访问元素之前验证args 是否有足够的长度,或者使用try/catch 块处理ArrayIndexOutOfBoundsException

      【讨论】:

        【解决方案3】:

        在 catch 部分使用带有 print 语句的 try/catch 块来显示特定消息。

        public static void main(String[] args)
        {
            try {
        
                int num = Integer.parseInt(args[0]);
                if (checkDigits(num))
                {
                    num = subtractNum(num);
                    addNum(num);
                }
        
            } catch (Exception e) {
                    System.out.println("Enter only a three digit number, with the first digit larger than the third");
                }
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-08-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-12-30
          • 2021-12-13
          • 1970-01-01
          相关资源
          最近更新 更多