问题描述
有一个字符串,如:
String str = "###############";
猜单词,例如:
String guess = "Java"
用户必须猜单词:
User input:
Sava
Sring应该是:
String str = "#a#a###########";
在索引上放置所有正确的符号
String
是不可变的类。
我选择了Stringbuilder
for (int i = 0; i < length ; i++) {
if (rnd.charat(i) == guess.charat(i) && rnd.charat(i) != '#'){
sb.append(rnd.charat(i));
}
}
System.out.println(sb);
sb.delete(0,sb.length());
Stringbuilder
不在位置'i'
上,而是在最后一个索引上添加正确的符号。
示例:
guess word: Java
user input Sala:
System.out.println(sb);
###############aa
如何获得所需的结果? 那我应该使用什么工具?
所需结果:
Example:
guess word Java:
user input Sala:
System.out.println(sb);
#a#a###########
解决方法
您可以执行以下操作:
public class Main {
public static void main(String[] args) {
String str = "#a#a###########";
String guess = "Java";
String input = "Sala";
StringBuilder sb = new StringBuilder();
int i;
for (i = 0; i < str.length() && i < guess.length() && i < input.length(); i++) {
// In case of a match,append the matched character
if (guess.charAt(i) == input.charAt(i)) {
sb.append(guess.charAt(i));
} else {// Else append the placeholder symbol from `str`
sb.append(str.charAt(i));
}
}
// Append the remaining placeholder characters from `str`
sb.append(str.substring(i));
// Display
System.out.println(sb);
}
}
输出:
#a#a###########
,
像这样工作:
private static String word(){
String guess = new Scanner(System.in).nextLine();
return guess;
}
private static void guessWord(String[]arr) {
int random = new Random().nextInt(arr.length);
String rnd = arr[random];
int length = 15;
StringBuilder sb = new StringBuilder();
String guess = "";
int rndLength = length - rnd.length();
int guessLength = length - guess.length();
do {
System.out.println("Enter a word: ");
guess = word();
if (sb.length() < length){
for (int i = 0; i < length ; i++) {
sb.append("#");
}
}
for (int i = 0; i < length && i < rnd.length() && i < guess.length(); i++) {
if (rnd.charAt(i) == guess.charAt(i)){
sb.setCharAt(i,rnd.charAt(i));
sb.delete(length,sb.length());
}
}
if (rnd.equals(guess)){
System.out.println("Guess word: " + rnd);
break;
}else if (!rnd.equals(guess)) {
System.out.println(sb);
}
}while (!rnd.equals(guess));
}