数组错误超出范围

时间:2013-10-17 03:56:36

标签: java arrays

运行代码时遇到问题。它编译得很好,但是当我运行它时我得到了这个错误。 data3.txt文件是一系列数字。

错误:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
    at database3.main(database3.java:6)

我的代码:

import java.io.*;
import java.util.*;
public class  database3 {
public static void main(String[] args) {

File inputDataFile = new File(args[0]);
Scanner inputFile = new Scanner("data3.txt"); // READ DATA FROM FILE   
int foundvalue = 0;
int d = inputFile.nextInt();
int list[] = new int[d];

for (int i = 0; i < d; i++)
    list[i] = inputFile.nextInt();


System.out.println("Database Server is Ready for Number Lookups!");

Scanner stdin = new Scanner(System.in); //Get user input
double input;
while (stdin.hasNext()){
  input = stdin.nextDouble();
  boolean found = false;
  System.out.println("The number to look up is: " +input);

  for (int j = 0; j < d; j++){
     if(list[j] == input){
        found = true;  
        break;   
     }    
  }
  if(found == true){
     System.out.println(input +" is in the database");
  }
  else{
     System.out.println(input +" is NOT in the database");
  }
}

System.out.println("Goodbye!");
System.exit(0);

}     
}

4 个答案:

答案 0 :(得分:3)

ArrayIndexOutOfBoundsException: 0表示有一个零元素的数组。

我怀疑有问题的数组是args,如果没有指定命令行参数,它将是一个没有元素的数组。 args[0]也方便地在第6行上,如异常消息所示。

与:比较:

public static void main(String[] args) {
  if (args.length < 1) {
     throw new Exception("Specify a filename!");
  }
  File inputDataFile = new File(args[0]);
  ..

然后,在运行程序时传递适当数量的命令行参数 - 即指定文件名:)

答案 1 :(得分:0)

数组出界主要是由于在数组中更多地使用变量或者数组的第一个索引是0,这意味着数组的最后一个索引比其长度小一个。所以,知道这一点,看看你的for循环中的条件,看看能否找到并修复问题。试试这个可能会解决你的问题。

答案 2 :(得分:0)

这意味着您的args[]数组中没有元素

因为你还没有通过任何地方:

public static void main(String[] args) {

所以args[0]没有任何价值,这就是你的错误背后的原因

答案 3 :(得分:0)

args是输入字符串的数组。

你的第6行:

File inputDataFile = new File(args[0]); 

使用索引0抛出索引超出范围错误, 这意味着args是一个空的String数组, 您尚未提供任何输入字符串值。

尝试在运行程序时输入输入字符串值。

使用命令行输入运行java程序, 在.java文件的目录中,键入:

java program "input"