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

コレクションを使用することをお勧めします。この方法では、事前にファイルのサイズを知る必要がなく、2 回ではなく 1 回だけ読み取ることができます。コレクションは独自のサイズを管理します。

于 2012-06-24T21:21:50.373 に答える
1

はい、2 回行う手間を気にしないのであれば、できます。使用するwhile(inputFile.hasNext()) i++;

要素の数を数えて配列を作成するには:

String[] scores = new String[i];

気になる場合は、配列の代わりにリストを使用してください。

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

のようなリスト要素を取得し、リスト要素list.get(i)を設定list.set(i,"string")し、リストの長さを取得できますlist.size()

ところで、あなたの行String [] fileArray = new String [filename];は間違っています。String の代わりに int を使用して配列を作成する必要があります。

于 2012-06-24T22:02:10.143 に答える
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 に答える
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 に答える