我如何制作Double.parseDouble(args [0]);工作?

时间:2017-08-18 16:32:59

标签: java indexoutofboundsexception

我想写这个小程序,它应该在为一个变量输入时进行简单的计算。这是代码:

public class DFact {
    public static void main(String[] args) {
        int n;
        int df;
        int i;

        n = Integer.parseInt(args[0]);  
        df = 1;                 
        i = n;              

        while(i > 0) {
            df = df * i;        
            i = i - 2;          
        }

        System.out.println(df); 
     }
}

对于这个程序,我收到以下消息:

  

线程中的异常" main" java.lang.ArrayIndexOutOfBoundsException:0
      在DFact.main(DFact.java:9)

2 个答案:

答案 0 :(得分:2)

我建议您将代码更改为以下内容:

public class DFact {
    public static void main(String[] args) {
        int n;
        int df;
        int i;

        for (String arg : args) { // to prevent nullpointers and index out of bound
            n = Integer.parseInt(arg);
            df = 1;
            i = n;

            while (i > 0) {
                df = df * i;
                i = i - 2;
            }

            System.out.println(df);
        }
    }
}

然后在您的文件目录中打开命令行并输入:

javac {fileName.java} 

java {fileName} 1 2 3 4 5 6 

答案 1 :(得分:1)

您正在获取索引超出范围的异常,这意味着args中没有索引0。在从中请求变量之前检查args的长度。

public class DFact
{
    public static void main(String[] args)
    {
        if (args.length > 0) {
            int n;              
            int df;                 
            int i;  

            n = Integer.parseInt(args[0]);  
            df = 1;                 
            i = n;              

            while(i > 0)            
            {
                df = df * i;        
                i = i - 2;          
            }

             System.out.println(df); 
        }
    }
}