class Swap{
public static void main(String args[]){
int num1 = Integer.parseInt(args[0]);
int num2 = Integer.parseInt(args[1]);
System.out.println("\n***Before Swapping***");
System.out.println("Number 1 : "+num1);
System.out.println("Number 2 : "+num2);
//Swap logic
num1 = num1 + num2;
num2 = num1 - num2;
num1 = num1 - num2;
System.out.println("\n***After Swapping***");
System.out.println("Number 1 : "+num1);
System.out.println("Number 2 : "+num2);
}
}
代码有什么问题,它不会发生编译。 我误解的东西,但我不知道是什么。 你能救我吗?
当我编译它时。 它给了。
java.lang.ArrayIndexOutOfBoundsException: length=0; index=0
at Swap.main(Main.java:5)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.aide.ui.build.java.RunJavaActivity$1.run(SourceFile:108)
at java.lang.Thread.run(Thread.java:856)
答案 0 :(得分:0)
使用命令行参数运行程序,您必须在没有参数的情况下运行它。您可以通过更改main
的前两行来验证这一点,
int num1 = Integer.parseInt("2");
int num2 = Integer.parseInt("5");
它按预期运行(据我所知)。这就是你得到错误的原因
java.lang.ArrayIndexOutOfBoundsException:length = 0;索引= 0 在Swap.main(Main.java:5)
第5行是Integer.parseInt(args[0]);
,args
是空的。
我会为此添加运行时错误处理,例如
if (args.length < 2) {
System.err.println("Please provide two command line arguments");
System.exit(1);
}
在这种情况下提供有意义的信息。
答案 1 :(得分:0)
你的主类的参数是空的,你可以将整个交换函数移动到一个新方法(在本例中我创建了swapNum
方法)并从你的主类中调用它,如下所示: / p>
public class Swap
{
public static void main(String[] args)
{
String[] myStringArray = {"1","2"};
swapNum(myStringArray);
}
public static void swapNum(String[] args){
int num1 = Integer.parseInt(args[0]);
int num2 = Integer.parseInt(args[1]);
System.out.println("\n***Before Swapping***");
System.out.println("Number 1 : "+num1);
System.out.println("Number 2 : "+num2);
//Swap logic
num1 = num1 + num2;
num2 = num1 - num2;
num1 = num1 - num2;
System.out.println("\n***After Swapping***");
System.out.println("Number 1 : "+num1);
System.out.println("Number 2 : "+num2);
}
}
结果是:
***Before Swapping***
Number 1 : 1
Number 2 : 2
***After Swapping***
Number 1 : 2
Number 2 : 1