2014-08-31 119 views
-1

因此,我试图从文本文件中将一系列“分数”放入数组,然后按顺序排序四行,并编写其他方法以获得最高分数,最低,平均等等。println命令在那里,但我还没有写入方法。我一直在工作一整天,我开始混淆自己,现在我在主方法中出现NullPointerException错误。任何帮助?将文本文件读入Java数组

package arrayops1d; 

import java.io.*; 
import java.util.*; 

public class ArrayOps1D { 

    static int scores[]; 
    public static void main(String[] args) throws Exception{ 
     FileReader file = new FileReader("C:/Users/Steve/Documents/" 
       + "NetBeansProjects/ArrayOps1D/Scores.txt"); 
     BufferedReader reader = new BufferedReader(file); 

     String scores = ""; 
     String line = reader.readLine(); 
     while (line != null){ 
      scores += line; 
      line = reader.readLine(); 
     } 


     System.out.println(scores); 
     System.out.println(getTotal()); 
     System.out.println(getAverage()); 
     System.out.println(getHighest()); 
     System.out.println(getLowest()); 
     System.out.println(getMedian()); 
     System.out.println(getPosition()); 
     System.out.println(getDeviations); 
     System.out.println(getStdDev); 


} 
+0

你可以发布你的文件内容? – 2014-08-31 23:15:55

+0

我不明白你的问题是什么?你能不能公司告诉发生了什么事情,我们可以帮忙? – 2014-08-31 23:22:58

+0

我在这里看不到太多的代码,它看起来你正试图将整个文件读入一个'String'。为什么? – 2014-08-31 23:23:58

回答

0

第一期与您的代码: 在你的文件的路径,而不是使用/,如果你的程序要在不同的平台上跑出你必须使用\\或更好File.separator

如果不这样做,你将有java.io.FileNotFoundException

您正在阅读的一行行,所以你可以使用split功能和使用Integer.paraseIntFloat.parseFloat每个splited元素转换并添加到您的阵列

  1. How to use Split in Java
  2. How to convert String to int
+0

不可以。您可以跨平台使用“/”。 – 2014-08-31 23:30:35

+0

真的吗?为什么它不适合我? – 2014-08-31 23:31:05

+0

是的。你必须举个例子。 – 2014-08-31 23:32:15

0

这里有一种方法,你可以从文件中读取的int值到使用ScannerList一个的Integer阵列 -

Integer[] scores = null; 
File file = new File("C:/Users/Steve/Documents/" 
     + "NetBeansProjects/ArrayOps1D/Scores.txt"); 
if (file.exists() && file.canRead()) { 
    try { 
     List<Integer> al = new ArrayList<>(); 
     Scanner scanner = new Scanner(file); 
     while (scanner.hasNext()) { 
      if (scanner.hasNextInt()) { 
       al.add(scanner.nextInt()); 
      } else { 
       System.out.println("Not an int: " + scanner.next()); 
      } 
     } 
     scores = al.toArray(new Integer[al.size()]); 
    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } 
} else { 
    System.out.println("Can't find file: " + file.getPath()); 
} 
if (scores != null) { 
    System.out.println("Scores Read: " + Arrays.toString(scores)); 
} 
+0

您如何期待OP向他或她的老师展示此代码时,老师能接受它? – 2014-08-31 23:31:45

+0

答案不正确。只是暗示将OP引向正确的方向,我相信你同意我的观点 – 2014-08-31 23:33:22

+0

@KickButtowski再次阅读OP的问题。除了将'int'读入数组之外,这个任务还有很多。而且OP实际上发布了似乎至少尝试它的代码。无论是这个,还是展示了如何从'String'解析所有'int',坦率地说我认为这个'Scanner'的例子非常简单。 – 2014-08-31 23:34:52