Java从文本文件读取到数组

时间:2014-11-17 20:38:15

标签: java arrays

我需要编写一个程序,从文本文件中读取数字以计算平均值。我试图让它读取并使用代码显示它们(在下面的错误中找到)但是我在运行时得到一个空白屏幕和错误:

堆栈跟踪

java.util.InputMismatchException
    at java.util.Scanner.throwFor(Scanner.java:909)
    at java.util.Scanner.next(Scanner.java:1530)
    at java.util.Scanner.nextDouble(Scanner.java:2456)
    at list.main(list.java:53)
    at __SHELL19.run(__SHELL19.java:6)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at bluej.runtime.ExecServer$3.run(ExecServer.java:774)
java.util.InputMismatchException
    at java.util.Scanner.throwFor(Scanner.java:909)
    at java.util.Scanner.next(Scanner.java:1530)
    at java.util.Scanner.nextInt(Scanner.java:2160)
    at java.util.Scanner.nextInt(Scanner.java:2119)
    at list.main(list.java:53)
    at __SHELL20.run(__SHELL20.java:6)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at bluej.runtime.ExecServer$3.run(ExecServer.java:774)
java.io.FileNotFoundException: FirstPa.txt (The system cannot find the file specified)
    at java.io.FileInputStream.open(Native Method)
    at java.io.FileInputStream.<init>(FileInputStream.java:146)
    at java.io.FileInputStream.<init>(FileInputStream.java:101)
    at java.io.FileReader.<init>(FileReader.java:58)
    at list.main(list.java:47)
    at __SHELL21.run(__SHELL21.java:6)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at bluej.runtime.ExecServer$3.run(ExecServer.java:774)

代码

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

public class reading 
{
  public static void main(String[] args) 
  {
     try 
     {
        List<Integer> column = new ArrayList<Integer>();   

        Scanner myfile = new Scanner(new FileReader("FirstPart.txt")); 

        while (myfile.hasNext()) 
        {     
            column.add(myfile.nextInt());      
        }
        myfile.close();
        System.out.println("column elements are:\n" + column); 
    } 
    catch (Exception e) 
    {   
        e.printStackTrace();  
    }
  } 
}

2 个答案:

答案 0 :(得分:2)

尝试指定路径,而不仅仅是FirstPart.txt

src/main/java/FirstPart.txt

根据错误找不到文件。

答案 1 :(得分:-3)

也许你可以先检查一下你的扫描仪是否包含int,如下例所示:

public class ScannerDemo {

   public static void main(String[] args) {

      String s = "Hello World! 3 + 3.0 = 6.0 true ";

      // create a new scanner with the specified String Object
      Scanner scanner = new Scanner(s);

      // find the next int token and print it
      // loop for the whole scanner
      while (scanner.hasNext()) {

         // if the next is a int, print found and the int
         if (scanner.hasNextInt()) {
            System.out.println("Found :" + scanner.nextInt());
         }
         // if no int is found, print "Not Found:" and the token
         System.out.println("Not Found :" + scanner.next());
      }

      // close the scanner
      scanner.close();
   }
}
相关问题