1

我有这个代码:

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])

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

4

5 回答 5

4

它应该提示用户输入

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

例如:

$java YourMainClass 5
于 2013-04-25T18:50:07.807 回答
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);

}
}
于 2013-04-25T19:04:42.557 回答
0

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

java OddSum1 5
于 2013-04-25T18:50:22.147 回答
0

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

于 2013-04-25T18:53:51.743 回答
0

你的数组args是空的。

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

硬编码数字,或从命令行传递它

于 2013-04-25T18:51:51.197 回答