这段代码的解决方案是什么?

时间:2015-10-09 01:45:08

标签: java

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)

2 个答案:

答案 0 :(得分:0)

使用命令行参数运行程序,您必须在没有参数的情况下运行它。您可以通过更改main的前两行来验证这一点,

int num1 = Integer.parseInt("2");
int num2 = Integer.parseInt("5");

它按预期运行(据我所知)。这就是你得到错误的原因

  

java.lang.ArrayIndexOutOfBoundsException:length = 0;索引= 0    在Swap.main(Main.java:5)

TL;博士

第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