2012-03-08 6 views
-1
private Scanner inputFile; 
private String corpusFileString = ""; 
try 
{ 
    File file = new File(sourceFile.getText()); 
    inputFile = new Scanner(file); 
    JOptionPane.showMessageDialog(null, "The file was found."); 
    if (text != null) 
    { 
     translate.setEnabled(true); 
    } 
} 
catch (FileNotFoundException ex) 
{ 
    JOptionPane.showMessageDialog(null, "The file was not found."); 
} 

try 
{ 
    numberWords = inputFile.nextInt(); 
} 
catch (InputMismatchException ex) 
{ 
    JOptionPane.showMessageDialog(null, "The first line on the file must be an integer"); 
} 

while (inputFile.hasNext()) 
{ 
    corpusFileString = corpusFileString + inputFile.nextLine() + " "; 
} 

このファイルを読むと、最初の行は整数(異なる変数が保持される)か、例外をスローします。 ファイルの残りの部分はデータ(すべてのデータの別の変数)でなければなりませんが、何らかの理由で文字列に最初に空白が含まれていて、分割するとその空き領域の配列に+1を使用する必要があります。ファイルを読み込むときに空白が入ります。java

+3

これは、より多くのJavaよりC#のように見えます試みることができるあなたの場合

while (reader.MoveNext()) { string s = reader.Current; } 

のようなものを書くでしょう。 – jrummell

+0

これは関連するコード部分ではないようです。 'Scanner'クラスのコードを見せてください。 –

+0

@ OlivierJacot-Descombes ScannerはJavaクラスに組み込まれています。 http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Scanner.html –

答えて

0

問題は、それが最初のintを読み取ってから、最初の行の残りの部分を読み取っていることです。

基本的には:

15 \ nはここでライン\ nは\ nは改行され、ここで

別のライン。

これは15を読み込んだ後、\ n(改行文字を除いた ")です。残りはあなたが期待どおりに読む。

は、使用してみてください:

numberWords = Integer.parseInt(inputFile.nextLine()); 

代わりの

numberWords = inputFile.nextInt(); 
0

私はjavaのわからないです。 nextInt()を読む前に、おそらくhasNext()に電話する必要があります。これは、.NETリーダーと列挙子が動作する方法です。 C#で、私はあなたが

if (inputFile.hasNext()) { 
    numberWords = inputFile.nextInt(); 
} 
関連する問題