有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java获取ArrayIndexOutOfBoundsException

我有以下代码:

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) 个答案

  1. # 1 楼答案

    It's supposed to prompt user for a

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

    例如:

    $java YourMainClass 5
    
  2. # 2 楼答案

    如果使用Eclipse,请从顶部菜单中选择Run->;跑在Arguments选项卡下,为程序参数提供一个数字

  3. # 3 楼答案

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

    java OddSum1 5
    
  4. # 4 楼答案

    你的数组args是空的

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

    硬编码编号,或从命令行传递

  5. # 5 楼答案

    您可以从以下两种方法中选择一种:

    方法1:通过将oddLimit作为参数传递给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);
    
    }
    }