1

我有一个简单的 Java 问题,如果可能的话,我需要一个简单的答案。我需要从文件中输入数据并将数据存储到一个数组中。为此,我必须让程序打开数据文件,计算文件中元素的数量,关闭文件,初始化数组,重新打开文件并将数据加载到数组中。我主要无法将文件数据存储为数组。这是我所拥有的:

要阅读的文件在这里:https ://www.dropbox.com/s/0ylb3iloj9af7qz/scores.txt

import java.io.*;
import java.util.*;
import javax.swing.*;
import java.text.*;


public class StandardizedScore8
{



//Accounting for a potential exception and exception subclasses
public static void main(String[] args) throws IOException
{
    // TODO a LOT
    String filename;
    int i=0;


    Scanner scan = new Scanner(System.in);
    System.out.println("\nEnter the file name:");
    filename=scan.nextLine();



    File file = new File(filename);


    //File file = new File ("scores.txt");
    Scanner inputFile = new Scanner (file);

    String [] fileArray = new String [filename];
    //Scanner inFile = new Scanner (new File ("scores.txt"));

    //User-input
//  System.out.println("Reading from 'scores.txt'");
//  System.out.println("\nEnter the file name:");
//  filename=scan.nextLine();

    //File-naming/retrieving
//  File file = new File(filename);
//  Scanner inputFile = new Scanner(file);
4

4 回答 4

2

我建议您使用集合。这样,您不必事先知道文件的大小,您只需阅读一次,而不是两次。集合将管理自己的大小。

于 2012-06-24T21:21:50.373 回答
1

是的,如果你不关心做两次事情的麻烦,你可以。采用while(inputFile.hasNext()) i++;

计算元素的数量并创建一个数组:

String[] scores = new String[i];

如果您确实关心,请使用列表而不是数组:

List<String> list = new ArrayList<String>();
while(inputFile.hasNext()) list.add(inputFile.next());

您可以获取列表元素 like list.get(i),设置列表元素 likelist.set(i,"string")并获取列表的长度list.size()

顺便说一句,您的线路String [] fileArray = new String [filename];不正确。您需要使用 int 创建数组而不是 String。

于 2012-06-24T22:02:10.143 回答
1
/*
 * Do it the easy way using a List
 *
 */

public static void main(String[] args) throws IOException
{
    Scanner scan = new Scanner(System.in);
    System.out.println("\nEnter the file name:");
    String filename = scan.nextLine();

    FileReader fileReader = new FileReader(filename);
    BufferedReader reader = new BufferedReader(fileReader);

    List<String> lineList = new ArrayList<String>();
    String thisLine = reader.readLine();

    while (thisLine != null) {
        lineList.add(thisLine);
        thisLine = reader.readLine();
    }

    // test it

    int i = 0;
    for (String testLine : lineList) {
        System.out.println("Line " + i + ": " + testLine);
        i++;
    }
}
于 2012-06-24T22:32:14.017 回答
1

我们可以使用 ArrayList 集合将文件中的值存储到数组中,而无需事先知道数组的大小。您可以从以下 url 获取有关 ArrayList 集合的更多信息。

http://docs.oracle.com/javase/tutorial/collections/implementations/index.html

http://www.java-samples.com/showtutorial.php?tutorialid=234

于 2012-06-26T17:41:12.950 回答