【问题标题】:Guessing symbols in a Sting word java [closed]猜测字符串单词java中的符号[关闭]
【发布时间】:2023-04-03 04:55:01
【问题描述】:

得到一个类似的字符串:

String str = "###############";

猜词,例如:

String guess = "Java"

用户必须猜词:

User input:

Sava

字符串应该是:

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###########

【问题讨论】:

标签: java string stringbuilder


【解决方案1】:

像这样工作:

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));
}

【讨论】:

    【解决方案2】:

    你可以这样做:

    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###########
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-11-04
      • 1970-01-01
      • 2012-10-30
      • 1970-01-01
      • 2019-07-12
      • 2014-12-07
      • 1970-01-01
      相关资源
      最近更新 更多