2017-04-18 81 views
-2

我是一个java初学者,我试着让下面的代码工作。为什么在解析args []数组时遇到ArrayIndexOutOfBoundsException?

class AgeCalc { 

    public static void main (String args[]) { 

     int yob = Integer.parseInt(args[1]); 
     int current = Integer.parseInt(args[0]); 
     int age = current - yob; 
     boolean hadBday = Boolean.parseBoolean(args[2]); 

     if (hadBday) { 
      System.out.println("You've already had your birthday"); 
     } else { 
      age--; 
      System.out.println ("You've not had your birthday"); 
     } 

     System.out.println("You are " + age + " years old!"); 
    } 
} 

我得到的错误是:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1 
    at AgeCalc.main(AgeCalc.java:5) 
+1

你传递给程序的参数是什么? – David

+1

请链接到本教程。 –

+1

的可能的复制[java.lang.ArrayIndexOutOfBoundsException:0](http://stackoverflow.com/questions/23456742/java-lang-arrayindexoutofboundsexception-0) – Tom

回答

1

您的args阵列(一个在主方法),这只是长度0的,这意味着在执行上索引12操作它没有索引12(或更多)。这就是为什么ArrayIndexOutOfBounds异常被抛出。你只是出界了。

0

这里你必须在运行应用程序时传递3个参数。

因为你正在访问阿根廷阵args[2]

传递运行在命令行中jar当沿参数,

$ java AgeCalc 2 5 true 

如果你是一个IDE。在运行时找到传递参数的方式。

0

按照您的说法,您需要提示输入来自用户的输入或首先将值分配给变量以获取答案。 我不会为此使用数组,除非您存储几个生日或日期进行比较,否则不需要它。

此外,当分配变量使用,很容易让你也引用注释你的代码允许所有的人试图帮助你

所以基本上...你的代码的一个Hello World版本会更容易调试意味深长的话遵循这样的

Public static void main (string [] args) 
{ 
     //Declaring variables 
     int bDate = 1964; 
     int curDate= 2017; 
     int age; 

     age= bDate - curDate; 
     System.out.println("Your current age is "+ age); 

}//End of main 

至于输入和determing如果发生某人的生日,您需要做一些搜索数组和对象数组有很多材料对如何搜索和排序数组。我可以显示你需要的所有代码,但是再次推荐kahn academy它会给你一个很好的基础。我相信这里的其他人也可以推荐书籍来帮助你学习。

+0

这不回答这个问题,为什么他有例外。 – Prizoff

相关问题