-1

stringBuffer を 2D Array に解析することに関しては、かなり多くの問題があります。

これが私が達成しようとしていることです....

これは私のファイルの例です。

 123456789
 123456789
 123456789
 123456789
 123456789
 123456789
 123456789
 123456789
 123456789

そして、それをJavaに手動で書き込むだけなら...

int[][] board = {
   {1,2,3,4,5,6,7,8,9},
   {1,2,3,4,5,6,7,8,9},
   {1,2,3,4,5,6,7,8,9},
   {1,2,3,4,5,6,7,8,9},
   {1,2,3,4,5,6,7,8,9},
   {1,2,3,4,5,6,7,8,9},
   {1,2,3,4,5,6,7,8,9},
   {1,2,3,4,5,6,7,8,9},
   {1,2,3,4,5,6,7,8,9},       
};

しかし、私は多くの異なるファイルを読み込んでいるので、私たちのためにそれを行うメソッドを作成しようとしています.

これは私のコードです。

        int[][] board = new int[9][9];

        File file = new File ("keiron.sud");
        FileReader fileReader = new FileReader(file);
        BufferedReader bufferedReader = new BufferedReader(fileReader);
        StringBuffer stringBuffer = new StringBuffer();
        String newline;
        while ((newline = bufferedReader.readLine()) != null) {
            stringBuffer.append(newline);
            stringBuffer.append("\n");
        }
        fileReader.close();
        String data =  stringBuffer.toString();
        int counting = data.length();
        int counter = 0;

        int i,j;

        for(i = 0; i<9; i++) {
            for (j =0; j < 9; j++) {
                int numbers = data.charAt(counter);
                counter++;

            board[i][j] = numbers;

            }
        }
        Print(board);

そして、これは私が得ている出力です

49 50 51 52 53 54 55 56 57 
10 49 50 51 52 53 54 55 56 
57 10 49 50 51 52 53 54 55 
56 57 10 49 50 51 52 53 54 
55 56 57 10 49 50 51 52 53 
54 55 56 57 10 49 50 51 52 
53 54 55 56 57 10 49 50 51 
52 53 54 55 56 57 10 49 50 
51 52 53 54 55 56 57 10 49

これは本当に意味がありません!

私は Java にかなり慣れていないので、5 歳児に説明するように説明してください。

ありがとうございました、

コードモンキー

4

2 に答える 2

0

こんなことしてるから

int numbers = data.charAt(counter); // char to int

数値のASCII 値を取得しています。

LHS には がintあり、RHS にはcharAt()を返すメソッドがありますchar。したがって、RHS の char の ASCII 値がintLHS の に割り当てられます。

実際の数値を取得するには、これを使用します

int numbers = Character.getNumericValue(data.charAt(counter)); // fetches the numeric value

文字列内に a を手動で-1追加しているため、間にaが入ります。\nそれを削除すると、それは表示されません-1

// stringBuffer.append("\n"); // This is unnecessary. Comment it out.
于 2013-10-28T07:35:44.567 に答える
0

に置き換えint numbers = data.charAt(counter);ますint numbers = data.charAt(j)-'0';

データ内のスペースを削除することを検討してください

 String data =  stringBuffer.toString().trim();
 data = data.replaceAll("\\s+", " ");
于 2013-10-28T07:45:02.123 に答える