2012-11-28 63 views
0

我已经在互联网上搜索了大约一个半小时,而我无法为我的生活找出我出错的地方。导入.dat文件Java

我的问题是,每次我尝试并运行它时,我都会收到一个错误,直到它搜索到文件而且没有失败,它会回复“找不到文件”。我在一个MAC我认为我正确地输入目录,但东西是搞砸了。

(当打开numEven.dat) 对于我的输入,我试过“numEven.dat”(放置dat文件在与java文件相同的目录中)

我也试过“/Users/java/numEven.dat”和“Users/java/numEven.dat” 我知道它在那个目录下。我究竟做错了什么?

主类文件:

import java.io.File; 
import java.io.FileNotFoundException; 
import java.io.IOException; 
import java.util.Scanner; 

public class StatDriver 
{ 

    public static void main(String[] args) 
    { 
     String fileName = ""; 
     Scanner scan = new Scanner(System.in); 

     double[] array = new double[20]; 

     System.out.print(" Enter file name: "); 
     fileName = scan.next(); 

     System.out.println("\n \n \n \n   My Grades - View Statistics"); 
     System.out.println("   ------------------------"); 

     // int valueCount = readFile(array,fileName); 
     array = readFile(array, fileName); 

     Stat stat = new Stat(array, array.length); 

     // call each calc on Stat class and display results for each method 
     stat.calcAvg(); 
     stat.calcMedian(); 
     stat.findMax(); 
     stat.findMin(); 
     // print the return values for each of the above out to the user 
    } 

    public static double[] readFile(double[] array, String fileName) 
    { 
     int valueCount = 0; 

     FileIO importFile = new FileIO(); 

     importFile.main(array, fileName); 
     System.out.println(array); 

     valueCount = array.length; 

     // return valueCount; 
     return array; 
    } 

} 

FileIO专注等级:

import java.util.Scanner; 
import java.io.*; 
public class FileIO 
{ 
    public void main (double[] array, String fileName) 
    { 
     double [] num = new double[5]; 
     Scanner inFile; 
     int i = 0; 

     try 
     { 
      System.out.println(fileName); 
      inFile = new Scanner(new File("fileName")); 

      while(inFile.hasNextDouble()) 
      { 
       array[i] = inFile.nextDouble(); 
       i++; 
      } 

      inFile.close(); 
      for(int x = 0; x < i; x++) 
       System.out.println(" " + num[x]); 
     } 
     catch(FileNotFoundException e) 
     { 
      System.out.println (" File not found"); 
     } 
     catch(ArrayIndexOutOfBoundsException e) 
     { 
      System.out.println (" array index too large"); 
     } 
    } 
} 

回答

1

尝试通过改变

inFile = new Scanner(new File("fileName")); 

inFile = new Scanner(new File(fileName)); 
的方法 FileIO.main

比其他(无链接的问题)

,可以使该方法FileIO.main静态的,并采取Java集合的优势,避免硬编码的double你的元素个数想要从文件中读取。在同样的方法中,你声明一个变量double[] num,但根本不使用它。

+0

此外,'FileIO.main'方法应该有一个不同的名称。 –

+0

是的,完全忘了谈论那个 – Alex

+0

是的,完全忘了谈论那个 – Alex