【问题标题】:how to change an index in a StringBuilder based on what the user enters如何根据用户输入的内容更改 StringBuilder 中的索引
【发布时间】:2014-05-27 17:06:11
【问题描述】:

我想根据用户输入的字符串更改StringBuilder 上的索引,例如我创建了一个数组,但我必须将其更改为字符串,所以我使用StringBuilder 这样做。现在我创建了另一个包含用户输入的字符串,然后用用户输入的内容替换索引。这是我所拥有的:

    Arrays inventory = new Arrays();
    String[] words = inventory.getWords();
    String[] category = inventory.getCategory();
    String board = "";
    StringBuilder builder = new StringBuilder();
    for(String s : words) {
        builder.append(s+"\n");
    }

这是代码的另一部分。我希望它更改索引的部分,但我收到一条错误消息,指出方法 setCharAt 未针对字符串类型定义。我还尝试了其他方法,例如replace(),但得到了同样的错误。我必须为此使用字符串:

 String word1 = builder.substring(0, 7);
     board.equals(word1);
     Scanner in = new Scanner(System.in);
     System.out.println("enter a letter to guess the word");
     String input = in.nextLine();
     char aChar = builder.charAt(0);
     if (input.equals(aChar)){
         board.setCharAt(0, input);
         System.out.println(board);
     }

【问题讨论】:

  • 你有什么问题?
  • 请注意,input.equals(aChar)永远不会为真
  • 字符串是不可变的,所以没有setCharAt 方法。为此,您需要使用 StringBuilder。
  • 我的问题是如何根据用户输入的内容更改字符串的索引。假设一个词是“huston”,但每个字母都将被 * 替换,如果用户输入 u,则与 u 相同的星号将被替换
  • 我试图回答您的问题,但如答案中所述,我不确定我是否理解您的问题。就像上面提到的@RC,您提供的代码中还有其他问题。

标签: java string stringbuilder


【解决方案1】:

为每个字母设置一个带有* 的StringBuilder:

  String theWord = "enter";
  StringBuilder board = new StringBuilder();
  for (int i = 0; i < theWord.length(); i++) {
     board.append("*");
  }

收集用户输入(为简洁起见不包括在内)

  char usersInput = 'e';  // For example

查找与原始单词中的字符匹配的字符并在 StringBuilder 中替换 *。

  for (int i = 0; i < theWord.length(); i++) {
     if (theWord.charAt(i) == usersInput) {
        board.setCharAt(i, usersInput);
     }
  }
  System.out.println(board.toString());

这将产生"e**e*"

【讨论】:

  • 好的,让我更好地解释一下,我有一个数组列表,然后我必须将其转换为字符串,因此使用 stringbuilder 并执行以下操作
  • Arrays inventory = new Arrays(); String[] words = inventory.getWords(); String[] category = inventory.getCategory();
  • 然后我刚刚创建了 stringbuilder StringBuilder builder = new StringBuilder(); for(String s : words) { builder.append(s+"\n"); }
  • for (int i = 0; i &lt; words[0].length(); i++){ board+= "*"; } System.out.println(board); 现在这个 if 语句只打印数组中的一个单词并用 * 打印它,我想更改单词中找到的每个字母,所以如果用户输入一个 i,我会* 将根据索引替换为 i 我该怎么做
  • 希望我修改后的答案能解决您遇到的问题。祝你好运。
猜你喜欢
  • 2015-06-22
  • 2020-06-13
  • 2022-10-16
  • 1970-01-01
  • 2017-03-27
  • 1970-01-01
  • 1970-01-01
  • 2020-02-10
  • 1970-01-01
相关资源
最近更新 更多