2016-10-25 12 views
0

配列を作成せずにファイルのすべての内容を追加することなく、特定の単語のファイルを検索するプログラムを作成しようとしていますそれは簡単に移植され、異なるファイルサイズなどで使用することができます)。以下は私のコードです:Java - リストを使用せずにファイルを検索する

package test2; 

import java.io.InputStream; 
import java.util.Scanner; 
import javax.swing.JOptionPane; 

/** 
* 
* @author Kafaka157 
*/ 
public class Prep2 { 

/** 
* @param args the command line arguments 
*/ 
public static void main(String[] args) { 
    InputStream stream = Prep1.class.getResourceAsStream("words.txt"); 
    Scanner scanner = new Scanner(stream);    

    while(scanner.hasNextLine()){ 

     String word = JOptionPane.showInputDialog("Input word to look for: "); 

     if(word.equals(scanner.next().trim())){ 
      JOptionPane.showMessageDialog(null, word + " found"); // found 
      break; 
     }else{ 
      JOptionPane.showMessageDialog(null,word + " not found"); // not found 
      break; 
     } 
    } 
    } 
} 

上記しかし、それは私がファイル内にいることを知っている言葉で見つけ戻りません、私のコードは、私はビルドエラーか何かを得ることはありません。それは、すべてのインスタンスで、私は間違っているすべてのヘルプ/アイデアelseにデフォルトに思われる?どうもありがとう。

+3

最初の反復で 'while'ループを抜け出しています。それは 'break'ステートメントを持つことです。そして、あなたの入力ダイアログがループの前に表示されるはずです(繰り返し入力を求めない限り)。 – khelwood

+1

'scanner.hasNextLine()'はおそらく 'scanner.hasNext()'でなければなりません。一般的に、あなたの読取り操作はあなたの小切手と一致する必要があります。 – VGR

+0

@ khelwood - そうですね、各繰り返しの後に終了したい/毎回尋ねます。後でオプションなどを追加して追加しますが、今のところそれは1つの使い方です。しかし、問題はそれが私がファイル内にあると知っている文字列を読んでいないことです –

答えて

1
public static void main(String[] args) { 
InputStream stream = Prep1.class.getResourceAsStream("words.txt"); 
Scanner scanner = new Scanner(stream);    
boolean wordFound = false;//initially set it to false 

String word = JOptionPane.showInputDialog("Input word to look for: "); 

while(scanner.hasNextLine()){ 

    if(word.equals(scanner.next().trim())){ 
//after the loop would be a better place to show below notification 
     //JOptionPane.showMessageDialog(null, word + " found"); // found 

     wordFound = true;//make the flag as true and break out of the loop 
     break; 
    }/*else{ 
     JOptionPane.showMessageDialog(null,word + " not found"); // not found 
     break; 
    }*/ 
} 
if(wordFound) 
     JOptionPane.showMessageDialog(null, word + " found"); // found 
else 
     JOptionPane.showMessageDialog(null,word + " not found"); 

ほんの少しの変更が必要です。上記のコメントがその目的に役立つはずです。主な問題は、最初の単語自体をチェックした後にループから抜け出すことです!

+0

それは素晴らしいです。ありがとうございます。明らかに、Javaに関してまだ多くのことを学ぶことはできません。コメント/返信ありがとうございました:)。 –

関連する問題