0

运行我的代码时遇到问题。它编译得很好,但是当我运行它时,我得到了这个错误。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

4 回答 4

3

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

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

与之比较:

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

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

于 2013-10-17T04:01:14.957 回答
0

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

于 2013-10-17T04:00:48.923 回答
0

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

因为你还没有通过这里:

public static void main(String[] args) {

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

于 2013-10-17T04:07:12.813 回答
0

args 是输入字符串的数组。

你的第 6 行:

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

使用索引 0 抛出索引越界错误,这意味着 args 是一个空字符串数组,您没有提供任何输入字符串值。

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

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

java program "input"
于 2013-10-17T04:08:50.427 回答