このファイルは整数だけで埋められています。可能であれば、各整数を描くスペースがあるかもしれないし、そうでないかもしれないファイルを読むことができるようにしたいと思います。空白で区切られた、または区切られた可能性のあるファイルを読み取る
ここに2つの視覚的な例があります。
最初のものは、スペースで区切られていない整数と2番目のものです。
第1の例:
020030090
000907000
900208005
004806500
607000208
003102900
800605007
000309000
030020050
第2の例:
0 3 8 0 12 0 15 16 6 0 4 0 0 0 0 0
0 11 5 0 1 0 0 14 13 0 3 9 12 7 0 0
0 0 0 0 6 0 0 0 0 12 0 14 0 0 0 16
10 16 0 6 2 13 0 0 0 8 7 0 0 0 0 0
3 10 1 0 13 0 0 15 0 9 0 16 5 0 0 0
0 0 16 0 0 0 0 11 14 0 13 12 0 3 0 0
4 0 7 8 0 0 12 9 0 0 0 0 0 0 11 0
0 6 0 0 16 0 0 0 11 5 0 0 15 0 0 2
11 0 0 12 0 0 8 2 0 0 0 1 0 0 14 0
0 7 0 0 0 0 0 0 3 11 0 0 8 16 0 9
0 0 13 0 3 6 0 7 16 0 0 0 0 11 0 0
0 0 0 2 5 0 14 0 15 0 0 4 0 13 7 1
0 0 0 0 0 14 5 0 0 0 16 2 13 0 8 10
14 0 0 0 8 0 9 0 0 0 0 11 0 0 0 0
0 0 6 15 7 1 0 3 12 0 0 13 0 2 5 0
0 0 0 0 0 15 0 12 1 14 0 3 0 6 16 0
注:
Iは、第2のファイルが線引きされていない可能性があることを追加したいと思います同じ金額でこれは、1つの整数がその後に1つのスペースを持ち、もう1つの整数がそれの後に10のスペースを持つことができることを意味します。
私が試してみました何:
を私は(「 """)でReplaceAllとの組み合わせでスプリット( "\ S +")を使用してみましたがが、これは第二では動作しませんこれは、より多くのスペースを持つため、split関数が機能しないためです。
私はreplaceAll( ""、 "")を使用してみましたが、空白が全くないようにしました。その後、文字列をchar配列に変換しましたが、これは1桁を超える整数の問題を示しました(2番目の例でもうまくいきません)。
コード:
public void initializeGrid(int grid[][], String fileName) throws FileNotFoundException, IOException
{
Scanner read = new Scanner(Paths.get(fileName));
int value;
for (int i = 0; i < ROWS; i++)
{
String line = read.nextLine();
String [] numbers = line.trim().split("\\s+");
for (int j = 0; j < COLUMNS; j++)
{
value = Integer.parseInt(numbers[j]);
grid[i][j] = value;
}
}
}
整数が区切られていない場合、どこが終了し、次のものが始まるかをどのように知っていますか? – dnault
@dnault私は問題だと知っていますが、ユーザーがファイルのパスを入力すると、各整数がスペースで区切られていることをどのように知ることができますか?それが可能ならば、私は最初に言ったのです。この状況について心配するのはずっと簡単ですが、両方のファイルが有効なのでできない場合はこの状況に対処したいと思います。 –
ああ、そうだ。最初の場合、各整数は '[0-9]'の範囲内にあることが保証されています。 2番目の場合は、整数が9より大きい場合に必要です。 – dnault