我试图找到两个参数的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);
}
}
答案 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();