为什么此parseInt抛出数组超出范围的异常?

时间:2018-08-29 04:26:45

标签: java indexoutofboundsexception

我试图找到两个参数的GCD,但是在第36行,它抛出ArrayOutOfBoundsException

  

线程“主”中的异常java.lang.ArrayIndexOutOfBoundsException:0     在Hcdno.main(Gcdno.java:36)

public class Gcdno {         
    static int gcd(int a,int b)
    {
        if(a==b)
            return a;
        if(a==0 || b==0)
            return 0;
        if(a>b)
            return hcd(a-b,b);
        return hcd(a,b-a);            
    }
    public static void main(String[] args) {
        int m=Integer.parseInt(args[0]);
        int o=Integer.parseInt(args[1]);
        int x= gcd(m,o);
        System.out.println(x); 
    }      
}

3 个答案:

答案 0 :(得分:1)

由于String[] args为空,因此出现错误。

每当您使用命令提示符运行Java程序并希望传递参数时,都将使用String[] args。我认为您没有在命令提示符下运行Java程序,或者如果您没有在传递参数,那么由于String[] args数组为空,因此会出现上述错误。 由于要获得m和o的值,因此可以使用以下内容:

Scanner scan = new Scanner(System.in);
int m= scan.nextInt();
int o = scan.nextInt();

现在,当您运行Java程序时,它将等待您的输入以及执行之后的输入。

答案 1 :(得分:0)

您得到了错误。因为没有为该方法的args参数提供值。

您可以使用以下格式运行应用程序

假设已编译的Gcdno类的文件路径为“ /home/himly/Gcdno.class”

运行以下命令

cd  /home/himly
java Gcdno 8 7

答案 2 :(得分:0)

有两个选项供您选择:

如果您使用的是IDE执行构建/运行任务,则最好使用第二个选项。

#1.启动程序时将数字括起来

在这种情况下,您需要转到包含Java程序的目录并运行:

history

#2.使用Scanner获取用户输入

您可以尝试以下方法:

switch (item.getItemId()) {
        case R.id.options:
            // do something
            return true;//<- Here you need to return true because breaking compile from this line returns default false;
         default:
            return super.onOptionsItemSelected(item);

    }

顺便说一句,您的javac Gcdno.java java Gcdno 3 5 方法存在一些错字问题。我将其固定为:

Scanner scanner = new Scanner(System.in);
int m=scanner.nextInt();
int o=scanner.nextInt();