2016-04-05 16 views
0

リンクリスト内のノードを使用して8文字のブロックにテキストファイルを割り当てる関数を作成しました。コードスニペット(& LinkedListのリストが初期化されたスキャナB):Java関数は1つのテキストファイルでのみ機能します

b = new Scanner(new BufferedReader(new FileReader("files\\A.txt"))); 
b.useDelimiter(""); 
String A = null; 

while (b.hasNext()) { 
    A = null; 
    A = b.next(); 
    for (int i = 0; i < 7; i++) { 
     A = A.concat(b.next()); 
    } 
    list.Insert(A); 

A.TXT読み取りファイル:

You can do anything, but not everything. 

この関数は、私のテキストファイルAのために働くと5つのノードを作成します(40文字合計)しかし、私がコード内でそれらを置き換えるのであれば、B.txtやC.txtでは動作しません。

B.TXT読み取りファイル:

You must be the change you wish to see in the world. 

C.txt読み取りファイル:

Always forgive your enemies; nothing annoys them so much. 

私はB.TXTまたはC.txtのいずれかを代用するたびに、私はこれらのエラーメッセージが出ます:

Exception in thread "main" java.util.NoSuchElementException 
    at java.util.Scanner.throwFor(Unknown Source) 
    at java.util.Scanner.next(Unknown Source) 
    at Main.CreateBlocks(Main.java:82) 
    at Main.main(Main.java:64) 

この原因は何ですか?

+1

ファイル内の文字よりも多くの文字を読み込もうとしているため、制御する必要があります。 B.txtは52文字で、アルゴリズムはファイル内の文字数がA.txtのように8倍(40など)である場合にのみ機能します。あなたはそれを制御する必要があります。 – RubioRic

+1

また、この行 "A = null;"を削除することもできます。後に "A = b.next();"を実行しても何もしません。 – RubioRic

+0

@RubioRicありがとう!答えが得られたら、どうすればこの質問を閉じることができますか? –

答えて

1

ファイル内にある文字よりも多くの文字を読み込もうとしているためです。 B.txtは52文字で、アルゴリズムはファイル内の文字数がA.txtのように8倍(40など)である場合にのみ機能します。

関連する問題