0

私はプログラミングが初めてで、数値のリストを含むファイルを取得して、フォーマットされた列 (5 行と 10 列) に出力できる整数の配列に変換するのに問題があります。を使用して正しくインポートしたと思いますArrayListが、列を印刷しようとすると問題が発生します。列を印刷するには for ループを使用する必要があると思いますが、100% 確実ではありません。どんな量の助けも大歓迎です!これが私のコードです:

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class Numbers {

    private List < Integer > data = new ArrayList < Integer > (); //Create ArrayList

    public static void main(String[] args) {
        String filename = "C/Users/s/Desktop/file4/Input.txt";

        Numbers rfe = new Numbers();
        rfe.readFile(filename);
    }



    private void readFile(String name) {
        String input;

        try (BufferedReader reader = new BufferedReader(new FileReader(name))) {

            while ((input = reader.readLine()) != null) {
                data.add(Integer.parseInt(input)); //Add each parsed number to the arraylist
                int[] i = input;

                for (i; i < null; i++) {
                    System.out.format("%20s, %10s", i);
                }

            }
        } catch (FileNotFoundException fnfe) {

        } catch (IOException ioe) {

        } catch (Exception ex) { // Not required, but a good practice
            ex.printStackTrace(); //Usually good for general handling
        }
    }
}

これはファイルに含まれるものです(行の各番号):

32
73
63
47
72
34
26
84
27
75
95
10
48
88
28
65
71
40
14
11
67
76
77
80
12
15
30
74
13
41
21
22
57
17
99
92
52
38
18
46
62
64
39
16
43
29
79
49
19
60
4

3 に答える 3

0

最初にファイルを読み取ってから、それを Arraylist に追加する必要があります。これで、arraylist から各値を取得し、それを 1 つずつ多次元配列に追加して簡単に表示できます。

ArrayList<Integer> data = new ArrayList<Integer>();

    String numberString="";

    try {
        BufferedReader br = new BufferedReader(new FileReader(fileName));
    /*  while ((numberString = br.readLine()) != null) {

        }*/
        numberString=br.readLine();
        System.out.println(numberString);
        String[] numbersArray = numberString.split(" ");
        for(int i=0;i<numbersArray.length;i++){
            //System.out.println("array value-->"+numbersArray[i]);
            data.add(Integer.parseInt(numbersArray[i]));
        }

    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
于 2015-10-04T17:41:10.753 に答える
0

コード内に 2 つの問題があります。その後、この部分ですべて:

while ((input = reader.readLine()) != null) {
    data.add(Integer.parseInt(input)); //Add each parsed number to the arraylist
    int[] i = input;

    for (i; i < null; i++) {
        System.out.format("%20s, %10s", i);
    }
}

最初に正しく行い、読み取った番号をリストに追加しました。data.add(Integer.parseInt(input));これで、ファイルから番号をリストに追加する必要があるため、しばらくの間これが必要になります。

while ((input = reader.readLine()) != null) {
    data.add(Integer.parseInt(input)); //Add each parsed number to the arraylist
}

その後、印刷したいのですが、表示されているエラーは、間違った割り当てを行っているためですint[] i = input;。これは忘れてください。必要ありません。

すべての数字を出力するには、リストをループする必要があります

for (int i=0; i<data.size(); i++){
    System.out.format("%20s, %10s", i); //here is your another problem
}

その行に 2 つのパラメーターを出力したいのです"%20s, %10s"が、1 つしか指定しないため、1 つだけを出力するか、i2 回渡します。

System.out.format("%20s, %10s", i, i); //twice

または

System.out.format("%10s", i); //just once
于 2015-10-04T17:27:05.120 に答える