2016-03-19 12 views
0

私のプログラムでchar配列を出力しようとしていますが、私のコンソールでは、配列は5つのボックスとして表示されます。文字列を出力すると空のボックスが出力されますか?

私のコードは、文字をとり、inputArray(char)をスキャンして一致するものを探し出すゲームです。一致するものがあれば、正しく推測された文字をcurrentGuessArrayの対応する位置に追加します。配列を正しく設定していませんか?

for (int i = 0; i == lengthOfWord; i++) { 
    if (guess.charAt(0) == inputArray[i]) { 
     currentGuessArray[i] = guess.charAt(0); 
    } 
} 
System.out.println(currentGuessArray); 

これは私が現在

Current console ouput

を出力しています私の完全なコードは、あなたがString表現でchar配列を印刷したい場合は、あなたが作成する必要が

public class Console { 
static String input = ""; 

public static String get() { 
    @SuppressWarnings("resource") 
    System.out.println("Enter the word to guess"); 
    Scanner s = new Scanner(System.in); 
    input = s.nextLine(); 
    return input; 
     } 
    } 


public class WordGuess { 

public static void guess() { 

    Scanner s = new Scanner(System.in); 
    String guess; 
    int trys = 0; 

    String input = ConsoleView.input; 
    int length = input.length(); 
    char[] inputArray = input.toCharArray(); 

    boolean[] currentGuess = new boolean[length]; 
    char[] currentGuessArray = new char[length]; 

    while (currentGuessArray != inputArray) { 
     System.out.println("Key in one character or your guess word:"); 
     trys++; 
     guess = s.nextLine(); 
     int guessLength = guess.length(); 


     if (guessLength == 1) { 
      for (int i = 0; i == length; i++) { 
       if (guess.charAt(0) == inputArray[i]) { 
        //currentGuess[i] = true; 
        currentGuessArray[i] = guess.charAt(0); 
       } 

      } 
      System.out.println(Arrays.toString(currentGuessArray)); 

     } else if (guess.equals(input)) { 
      System.out.println("You're correct!"); 
      break; 
     } 

     else if (currentGuessArray == inputArray) { 
      System.out.println("Congratulations, you got the word in " + trys); 
     } 
    } 

    } 
} 

答えて

1

のようにそれは働いていない見つけることができます。

for (int i = 0; i == length; i++) 

for第二式はループが継続するための条件であります。したがって、この場合、i == lengthは直ちにfalseになり、ループは実行されません。そのため、配列currentGuessArrayには値がありません。

これに変更し、それを:

for (int i = 0; i < length; i++) 

、あなたはその1に大丈夫でなければなりません。

ところで、あなたのwhileループも永遠に実行されます。 (currentGuessArray != inputArray)は参照であるため常にfalseになり、!=は参照を比較します。配列の要素を比較して、配列が同じかどうかを調べる必要があります。 (私は確かにそれを行うことができるArraysのメソッドがあると確信しています)

+0

ハァッ、うわー、私はそのような小さな間違いを見落としたとは信じられない!ありがとう、これは修正されました! – snazzyjazzy

+0

甘い!私は助けることができてうれしいです。私の答えを受け入れたものとしてマークすることを忘れないでください。 – tyrel

0

は何かということですのStringのオブジェクトアレイ。

これを試してみてください:

String.valueOf(currentGuessArray); 
+0

残念ながら私はそれを試してきましたが(と.toString)でも同じ結果が得られますか? – snazzyjazzy

+1

これはエンコードの問題のようです。フルコードを表示してください。 –

+0

私はまだ有効なリターンを得ることができないので、私は私のフルコードを追加しました。 – snazzyjazzy

0

あなたはアルファベット文字ではなく、他のランダムな文字を使用していることを確認し、またArrays.toString()

System.out.println(Arrays.toString(currentGuessArray)); 

を試すことができます。

あなたのforループがループされることはありませんので、この

for (char c : currentGuessArray) { 
    if (!Character.isLetter(c)) { 
     System.out.println("Error !, currentGuessArray contains other characters than letters); 
    } 
} 
+0

私はこれを試しました。テストでは、配列にアルファベット文字が含まれているようですが、toStringの提案はまだ機能しませんでした。 – snazzyjazzy

関連する問題