次のコードに問題があります。シナリオはそのようなものです:ユーザは文字列を入力します(文でもよい)。コードは、単語ごとに、母音で始まる単語の最後に+ "ay"を表示し、単語の最初の文字を単語の最後に置きます(最後に "ay"を追加します) )。単語を始める文字でない場合は、それを印刷してください。しかし、正しい大文字で「はい」または「いいえ」を入力することによって、ユーザーが続行したいかどうかを尋ねるはずです。(JAVA)次のコードはデバッグできません:どのようなエラーが発生したか、これらのエラーを修正する方法?
私はそれをデバッグしようとし、意図したとおりに動作しません。しばらくして(scanWord.hasNext())すべてのものが動作することがわかります。しかし、そのループの後、残りの部分はexecuterによって無視されます(そのようにコメントされます)。あなたは、私が答えを得るのを助け、間違いを説明し、他人と自分自身をより良いJava開発者にすることができますか?
//import Scanner
import java.util.Scanner;
public class Prog508a {
public static void main(String [] args) {
//Declare variables
String word;
String response;
boolean answer = true;
//Declare Scanner objects
Scanner scanWord = new Scanner(System.in);
Scanner answerQuestion = new Scanner(System.in);
//while user still wants to continue
while (answer == true) {
//ask user for input
System.out.print("Enter a sentence: ");
//while the input still contains words
while (scanWord.hasNext()) {
//input from user is word
word = scanWord.next();
//if the character is letter at 0
if (Character.isLetter(word.charAt(0))) {
//and if the character is not a vowel at index 0
if (!(word.charAt(0) == 'a')
&& !(word.charAt(0) == 'e')
&& !(word.charAt(0) == 'i')
&& !(word.charAt(0) == 'o')
&& !(word.charAt(0) == 'u')) {
//the output is added the substring of word from the second letter and added first letter at the end
word = word.substring(1,word.length())+ word.charAt(0);
}
//word is added "ay"
word+= "ay";
}
//print the word result
System.out.print(word + " ");
}
//EVERYTHING UNDER HERE DOES NOT EXECUTE
System.out.println("\n");
System.out.print("Do you wish to convert another sentence (Yes or No): ");
response = answerQuestion.next();
while (!(response.compareTo("No") == 1) || !(response.compareTo("Yes") == 1)) {
//if the answer is no or yes (no capitalization)
if (response.compareTo("no") == 1 || response.compareTo("yes") == 1) {
while (response.compareTo("no") == 1 || response.compareTo("yes") == 1) {
System.out.println("Capitalization is important! Input correctly: ");
response = answerQuestion.next();
}
} else if (!(response.compareTo("No") == 1) || !(response.compareTo("No") == 1)) {
while (!(response.compareTo("No") == 1)
|| !(response.compareTo("Yes") == 1)
|| !(response.compareTo("no") == 1)
|| !(response.compareTo("yes") == 1)) {
System.out.println("You must input either yes or no! Input correctly: ");
response = answerQuestion.next();
}
}
}
if (response.compareTo("No") == 1)
answer = false;
if (response.compareTo("Yes") == 1)
answer = true;
}
//close the scanners
answerQuestion.close();
scanWord.close();
}
}
デバッグから何を学びましたか? – Carcigenicate
'compareTo'がどのように動作するのか分かりません。 –
最初の変換(最初の文)で動作しますが、続行を要求しません。 –