私は、映画を推測するゲームを作成しようとしています。ハングマンのようなものですが、映画のタイトルを推測する必要があります。ムービータイトルは、各文字がアンダースコア( '_')文字で表されるようにエンコードされます。ユーザーが正しい文字を入力すると、対応する文字の位置にある下線がその文字に変わります。ユーザは、スキャナを使用して、自分の推測を単一の文字として入力する。 私の問題は、一部の映画のタイトルにスペース( '')が含まれていることです。しかし、私はスペースを返すためにスキャナを使用することができません...私の推測では、スキャナは、空白を使用して入力をトークンに分解するため、空白をデフォルトの区切り文字として使用するので、 ?スキャナでの印刷スペース
「スペースを返す」とは、区切りとしてではなく入力としてスペースを考えていることを意味します。
私はユーザーの入力からどのようにスペースを検出できるかについて誰にでも私に解決策を教えてもらえますか?
このコードはmovieTitleを読み取る必要があります。次に、ムービータイトルにインデックスiのスペースが含まれ、ユーザー入力がスペースの場合、codedMovieTitleは、アンダースコアの代わりに位置iのスペースで更新する必要があります。しかし、これは機能しません。私は、スキャナ何も起こりません使用してスペースを入力すると...
for (int i = 0; i < movieTitle.length(); i++) {
if(Character.isSpaceChar(movieTitle.charAt(i)) &&
Character.isSpace(userInput)){
encodedMovieTitle = encodedMovieTitle.substring(0, i)
+ userInput
+ encodedMovieTitle.substring(i + 1);
}
}
これは私のスキャナ用のコードです:
Scanner scanner = new Scanner(System.in);
char userInput;
while(!gameIsWon && (numberOfGuessesLeft != 0)) {
while (scanner.hasNextInt()) {
System.out.println("You must enter a single character, try again.");
scanner.next();
}
userInput = scanner.nextLine().charAt(0);
私はまた、非大文字と小文字を区別する私のスキャナ入力を可能に苦しんでいます。映画の中には大文字のものがあります。 タイトルが "Snowstorm"で、ユーザーが文字 's'を入力した場合、encodedMovieTitleは "S _ _ S _ _ _ _ _"ではなく "_ _ _ S _ _ _ _"になります。
誰かがすばらしい解決策を持っていれば!私が見つけたほとんどのソリューションは文字列を使っていましたが、私はuserInputなどとしてcharsを使用していました。したがって、charsを含むソリューションがあるかどうか疑問に思っていました。実際
for (int i = 0; i < movieTitle.length(); i++) {
if (updatedCodedMovieTitle.charAt(i) != userInput && movieTitle.charAt(i) == userInput) {
updatedCodedMovieTitle = updatedCodedMovieTitle.substring(0, i)
+ userInput
+ updatedCodedMovieTitle.substring(i + 1);
wordHasBeenUpdated = true;
}
if(Character.isSpaceChar(movieTitle.charAt(i)) && Character.isSpaceChar(userInput)){
updatedCodedMovieTitle = updatedCodedMovieTitle.substring(0, i)
+ " "
+ updatedCodedMovieTitle.substring(i + 1);
}
}
スキャナコードも貼り付けてください。 –
スキャナの作成方法を教えてください。 –
スキャナコード – CheckCho