获取ArrayIndexOutOfBoundsException

时间:2013-04-25 18:47:57

标签: java arrays

我有这段代码:

public class OddSum1 {
   public OddSum1() {
   }
   public static void main(String[] args) {

   int OddLimit = Integer.parseInt(args[0]);
   int sum = 0;

   for (int i = 1; i <= OddLimit; i += 2) {
     sum += i;
   }

   System.out.println("The sum of odd numbers from 1 to " + OddLimit + " is " + sum);

   }    
}

每当我运行它时,我都会收到此错误:

java.lang.ArrayIndexOutOfBoundsException: 0
    at OddSum1.main(OddSum1.java:7)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at edu.rice.cs.drjava.model.compiler.JavacCompiler.runCommand(JavacCompiler.java:272)

它应该提示用户输入一个数字,然后将奇数从1加到输入的数字,我猜这是int OddLimit = Integer.parseInt(args[0])的问题;

但我只是不知道如何修复它,任何帮助都会很棒。

5 个答案:

答案 0 :(得分:4)

  

应该提示用户输入

您需要将参数传递给main,命令行参数,然后将索引更改为0

例如:

$java YourMainClass 5

答案 1 :(得分:1)

您可以从下面采用以下两种方法之一:

方法1:您可以通过将其作为参数传递给main方法来指定oddLimit:

代码:

public class OddSum1 {
public OddSum1() {
}
public static void main(String[] args) {
int OddLimit = Integer.parseInt(args[0]);
int sum = 0;
for (int i = 1; i <= OddLimit; i += 2)
sum += i;
System.out.println("The sum of odd numbers from 1 to " + OddLimit + " is " + sum);
}    
}

编译并运行代码:

javac OddSum1.java

java OddSum1 20

方法2:从提示符

以交互方式阅读OddLimit

代码:

public class OddSum1 {
public OddSum1() {
}
public static void main(String[] args) {

int OddLimit = Integer.parseInt(System.console().readLine());
int sum = 0;

for (int i = 1; i <= OddLimit; i += 2)
sum += i;

System.out.println("The sum of odd numbers from 1 to " + OddLimit + " is " + sum);

}
}

答案 2 :(得分:0)

它不会提示您输入。您必须将输入添加到命令行。

java OddSum1 5

答案 3 :(得分:0)

您的数组args为空。

int OddLimit = Integer.parseInt("100");  

硬编码,或从命令行传递

答案 4 :(得分:0)

如果使用Eclipse,请从顶部菜单中选择Run-&gt; Run ...并在Arguments选项卡下为Program参数提供一个数字。