在Java中循环时,如何根据单词的长度定义猜测的次数?
当程序要求输入与单词长度一样多的输入时,我想获得一些编码这一部分的帮助 因此,当我们启动程序时,它会从数组中随机选取一个单词,例如,如果我们要查找的单词是“team”,这意味着我们有四次猜测 我试图用下面的片段来解决它。看起来很简单,但我遗漏了一些东西:在Java中循环时,如何根据单词的长度定义猜测的次数?,java,arrays,string,while-loop,Java,Arrays,String,While Loop,当程序要求输入与单词长度一样多的输入时,我想获得一些编码这一部分的帮助 因此,当我们启动程序时,它会从数组中随机选取一个单词,例如,如果我们要查找的单词是“team”,这意味着我们有四次猜测 我试图用下面的片段来解决它。看起来很简单,但我遗漏了一些东西: while(!guess.equals(choosenWord) && letters <= choosenWord.length()) { System.out.print("Your g
while(!guess.equals(choosenWord) && letters <= choosenWord.length()) {
System.out.print("Your guess is: ");
guess = sc.nextLine();
while(!guess.equals(choosenWord)&&letters这里有一个三元运算符(?:
)的解决方案:
。。。
猜测=sc.nextLine();
for(char c:chosenWord.toCharArray()){
System.out.print(guess.contains(String.valueOf(c))?c:'-');
}
...
完整的解决方案(经过测试和验证),只需运行即可
publicstaticvoidmain(字符串[]args){
findTheWord();
}
公共静态void findTheWord(){
//初始化
扫描仪sc=新的扫描仪(System.in);
字符串[]字={
“狗”、“猫”、“房子”、“爱”、“朋友”、“纸”、“夏天”、“薯条”,
“数字”、“文件”、“程序”、“乐透”、“工作”、“搞笑”、“数据库”,
“团队”、“个人资料”、“facebook”、“bean”、“冬季”、“春季”、“java”,
“检查”、“医院”、“出生”、“婴儿”、“新生儿”、“飞机”,
“幼儿园”、“秋季”};
字符串randomWord=单词[(int)(Math.random()*31)];
字符串猜测=”;
//开始猜测
for(int i=0;i为什么for
循环?您可以增加循环体中的猜测“counter”字母
,循环将在到达单词末尾时停止。您完全正确,它可以工作。
import java.util.Scanner;
public class FindTheWord {
public static void main(String[] args) {
findTheWord();
}
public static void findTheWord() {
Scanner sc = new Scanner(System.in);
String[] words = {
"dog", "cat", "house", "love", "friend", "paper", "summer", "chips",
"number", "file", "program", "lotto", "work", "funny", "database",
"team", "profile", "facebook", "bean", "winter", "spring", "java",
"examination", "hospital", "birth", "baby", "newborn", "airplane",
"kindergarten", "autumn"};
int randomWord = (int) (Math.random() * 31);
String choosenWord = " ";
int letters = 0;
String guess = " ";
char ch = ' ';
for (int i = 0; i < words[randomWord].length(); i++) {
choosenWord = words[randomWord];
}
for (int j = 0; j < choosenWord.length(); j++) {
letters = choosenWord.length();
while(!guess.equals(choosenWord) && letters <= choosenWord.length()) {
System.out.print("Your guess is: ");
guess = sc.nextLine();
}
}
System.out.println(words[randomWord]);
System.out.println(letters);
}
}
public static void main(String[] args) {
findTheWord();
}
public static void findTheWord() {
//Init
Scanner sc = new Scanner(System.in);
String[] words = {
"dog", "cat", "house", "love", "friend", "paper", "summer", "chips",
"number", "file", "program", "lotto", "work", "funny", "database",
"team", "profile", "facebook", "bean", "winter", "spring", "java",
"examination", "hospital", "birth", "baby", "newborn", "airplane",
"kindergarten", "autumn"};
String randomWord = words[(int) (Math.random() * 31)];
String guess = "";
//Start Guessing
for (int i = 0; i <= randomWord.length(); i++) {
if (!guess.equals(randomWord)) {
System.out.print("Your guess is: ");
guess = sc.nextLine();
String result = checkGuessMatch(randomWord, guess);
if (!result.isEmpty())
System.out.println(result);
} else {
System.out.println("#################################");
System.out.println("############SUCCESS#############");
System.out.println("##########THE WORD WAS###" + guess);
System.out.println("#################################");
return;
}
}
System.out.println("####GAME OVER###");
System.out.println("THE WORD WAS = " + randomWord);
}
public static String checkGuessMatch(String word, String guess) {
Boolean sameIndexIsExist = false;
char[] wordChars = word.toCharArray();
char[] guessChars = guess.toCharArray();
String target = "";
for (int i = 0; (i < word.length()); i++) {
if (i < guess.length() && guessChars[i] == wordChars[i]) {
target = target + guessChars[i];
sameIndexIsExist = true;
} else
target = target + "-";
}
if (!sameIndexIsExist)
return "";
else return target;
}