2012-02-03 6 views
0

Assigning 1 line of a txt file to a string via scanner 答えが提供される場合、プログラムは10,000ミリ秒間スリープ状態になるようにArrayListを実装しました(そうでなければ、 "Look itアップ」(A.TXTの形式があることに注意してください配列が右の行にない場合[Java]

  • 質問
  • 回答
  • 質問
  • 回答)

しかし、答えが提供されてもプログラムを実行すると、睡眠の代わりに "Look up"という質問が表示されますが、これはiv/eが質問/回答を見つける方法と関係があります。 Heres私のコード、Eclipseはエラーを表示しません -

public class Test { 
    public static void main(String[] args) throws InterruptedException { 

    // Location of file to read 
    File file = new File("a.txt"); 
    List<String> lines = new ArrayList<String>(); 

    try { 

     Scanner scanner = new Scanner(file); 

     while (scanner.hasNextLine()) { 
      lines.add(scanner.nextLine()); 
     } 
     scanner.close(); 
     for (int i = 1 ; i < lines.size(); i+=2) 
     { 
      String question = lines.get(i - 1); 
      String answer = lines.get(i += 1); 
      String a = JOptionPane.showInputDialog("" + question); 
      if (a==answer){ 
       Thread.sleep(10000); 
      }else 
       JOptionPane.showMessageDialog(null,"Please look it up"); 
     } 
    } catch (FileNotFoundException e) { 
    System.out.println("Can't find file"); 
    } 
} 
} 

ありがとうございました。 編集: - 私のコードは次のようになり、まだ機能していないhttp://pastebin.com/C16JZGqH

+0

あなたのポストplsを修正してください。 – L7ColWinters

+0

は、文字列を比較するときに.equalsも使用します。 – L7ColWinters

+0

期待した答えを印刷することを試みたことがありますか? –

答えて

6

を比較する文字列が.equals

if (a==answer){ 

を使用する場合

if (a.equals(answer)){ 

EDIT次のようになります。 一見それはのように見えます文字列の比較が問題でしたが、スコットは答えでそれがあなたの唯一の問題ではないと言いました。ループの制御変数をループ内で自動インクリメントしています。ループはです。これは混乱の発生場所を示すヒントです。

は、このようなあなたのループを修正し、あなたの制御変数は0から始まり、そしてlines.get通話

for (int i = 0 ; i < lines.size(); i+=2) 
     { 
      String question = lines.get(i); 
      String answer = lines.get(i+1); 
      String a = JOptionPane.showInputDialog("" + question); 
      if (a.equals(answer){ 
       Thread.sleep(10000); 
      }else 
       JOptionPane.showMessageDialog(null,"Please look it up"); 
     } 
+0

私は自分のプログラムにそれを編集しましたが、まだ正しい答えを認識していません – Icy100

+0

Scottは答えて、i + = 1の内部ループ。ループ内のforループの制御変数を変更していることを意味します。一般的には良いことではありません。 –

+0

あなたはi + 1に変更する必要があります –

0

ない==

+0

それでも、うまくいきませんでしたT_T – Icy100

+0

あなたはスコット・ハンターが言ったように、あなたがインクリメントする方法に問題があります。 – talnicolas

4
、2つの文字列を比較すること equals()メソッドを使用します

危険への変更に注意してください!危険!

String answer = lines.get(i += 1); 

関数呼び出しとループ制御変数の自動インクリメント - これはうまくいかない。

+0

Scottをよく見つけた –

0
for (int i = 1 ; i < lines.size(); i+=2) 
     { 
      String question = lines.get(i - 1); 
      String answer = lines.get(i); 
      String a = JOptionPane.showInputDialog("" + question); 
      if (a==answer){ 
       Thread.sleep(10000); 
      }else 
       JOptionPane.showMessageDialog(null,"Please look it up"); 
     } 
0

あなたはまだ動作していないと言いますが、それはそうです。 もう一度お試しください:

import java.io.*; 
import java.util.*; 
import javax.swing.*; 

public class Test { 
    public static void main(String[] args) throws InterruptedException { 
     // Location of file to read 
     File file = new File("a.txt"); 
     List<String> lines = new ArrayList<String>(); 
     try { 
     Scanner scanner = new Scanner(file); 
     while (scanner.hasNextLine()) { 
      lines.add(scanner.nextLine()); 
     } 
     scanner.close(); 
     for (int i = 0 ; i < lines.size(); i+=2) 
     { 
      String question = lines.get(i); 
      String answer = lines.get(i + 1); 
      String a = JOptionPane.showInputDialog("" + question); 
      if (a.equals(answer)){ 
       Thread.sleep(1000); 
      } else 
       JOptionPane.showMessageDialog(null,"Please look it up"); 
     } 
     } catch (FileNotFoundException e) { 
     System.out.println("Can't find file"); 
     } 
    } 
} 
関連する問題