2017-05-09 6 views
0

私は自分の足をJavaで濡らしていますが、私は問題を偶然見つけました。私は既にそれについての答えがあるかもしれないと思うが、私はそれが私が探しているべきであることを知るための初心者でありすぎている - それはまた私の専門用語が正しくないかもしれないことを意味する。この無作為化された文字列とjavaのif文の問題

次のコードでは、単語の配列からランダムな選択肢を作成しようとしていますが、ifステートメントを使用してその単語を表示するか表示しません。問題はif文の条件が満たされていても(文字列 "cat"または "dog"のいずれかが取得されている)、アクションは "cat"または "dog"の代わりにリストされた単語のいずれかを表示します。

私がSystem.out.println(exampleWord());を10行目で使用すると、ルーチンは新しい値を配列から取得し、if文を無視していると考えられます。

これを回避する最も簡単な方法は何ですか?

import java.util.Random; 

public class Phrasing { 
    String word; 

    public static void main(String[] args) { 
     int i = 1; 
     while (i < 9) { 
      if ("cat".equals(exampleWord()) || "dog".equals(exampleWord())) { 
       System.out.println(exampleWord()); 
       i++; 
      } 
     } 
    } 

    public static String exampleWord() { 
     String[] listedWords = {"cat", "dog", "horse", "fish", "turtle", "mouse"}; 
     Random random = new Random(); 
     int index = random.nextInt(listedWords.length); 
     Phrasing wordOutput; 
     wordOutput = new Phrasing(); 
     wordOutput.word = listedWords[index]; 
     return (wordOutput.word); 
    } 
} 

答えて

6

はい、あなたは正しいです。 exampleWord()を呼び出すたびに、ランダムな単語が生成されます。一度Stringに保管してみてください。あなたはexampleWord方法では、不必要ないくつかの作業を行っているよう

public static void main(String[] args) { 
    int i = 1; 
    while (i < 9) { 
     String s = exampleWord(); 
     if ("cat".equals(s) || "dog".equals(s)) { 
      System.out.println(s); 
      i++; 
     } 
    } 
} 

また、それはそうです。あなたは

public static String exampleWord() { 
    String[] listedWords = {"cat", "dog", "horse", "fish", "turtle", "mouse"}; 
    Random random = new Random(); 
    return listedWords[random.nextInt(listedWords.length)]; 
} 
+1

良い、私のupvoteを持っていこう! :) –

6

あなたは一度だけの単語を生成して、チェックして出力にそれを実行する必要があります。

while (i < 9) { 
    String exampleWord = exampleWord(); 
    if ("cat".equals(exampleWord) || "dog".equals(exampleWord)){ 
     System.out.println(exampleWord); 
     i++; 
    } 
} 
1

問題は、あなたがexampleWord()あなたが結果に「猫」や「犬」を比較するたびに実行され、その後、再び、あなたは結果を印刷し、それを実行することで行うことができます。 ループ内でexampleWord()を1回実行して変数に格納し、最後に結果を比較して出力してください。 のような何か:

あなたはchanges.Iが同じことを示唆するつもりだったことを示唆している
String result = exampleWord() 
if("cat".equals(result) || "dog".equals(result)) { 
    System.out.println(result); 
    i++; 
}