【问题标题】:Need to Select a random letter in a string and change it需要在字符串中选择一个随机字母并更改它
【发布时间】:2012-03-04 17:34:13
【问题描述】:

有人可以告诉我如何将字符串输入到方法中,它会选择字符串中的一个字母并将其更改为我选择的字母。例如,我会调用ChangeString(hello),它会返回一个更改了一个字母的字符串,例如"Hel_o"

(编辑) 我试过 setCharAt() 并输入一个随机数,但我不知道如何让它只更改一个字母,而让其余的字符串不理会,然后给我更改后的字母和新字符串。

(编辑 2) 好吧,我似乎想到了什么。谢谢大家!

这不是家庭作业,这是我在 Eclipse 中为市场开发的应用程序!我只是需要帮助。

【问题讨论】:

  • 同上 -- link! 否则我们怎么知道你做错了什么,你需要什么帮助?
  • 我试过 setCharAt() 并输入一个随机数,但我不知道如何让它只更改一个字母,而不要理会字符串的其余部分并给我更改后的字母。
  • 考虑循环遍历字符或对随机数进行下限并将字符串作为数组访问。
  • changeString()而不是ChangeString(),根据java约定,方法名应该以小写开头
  • 我没有听说过setCharAt() 的信。您在这里使用的是 String 对象还是其他类似 StringBuffer 的东西?请通过编辑问题并发布代码和消息来显示您在上述问题中的代码尝试以及任何错误消息。我们可以帮助您格式化代码,以便在论坛中阅读。

标签: java string


【解决方案1】:

首先,将字符串转换为字符数组。然后,生成一个介于 0 和字符串长度之间的随机整数。将该数组索引处的字符设置为下划线。使用修改后的字符数组返回一个新字符串。

String changeString(String s)
{
   char[] characters = s.toCharArray();
   int rand = (int)(Math.random() * s.length());
   characters[rand] = '_';
   return new String(characters);
}

【讨论】:

  • 似乎比我的修复更好,谢谢!
  • 你应该只发布一个提示而不是一个完整的解决方案:毕竟,这个问题绝对是一个家庭作业类型的问题。因此,拥有完整的答案并不能帮助 OP 学习如何编码。
  • 这不是家庭作业,这是我在 Eclipse 中为市场开发的应用程序!我只需要帮助。
  • @Xwire:这与是否是家庭作业无关。如果从我们的建议中找到解决方案,而不是有人用勺子喂给您,您会了解更多信息。时期。如果您向我们展示您的代码尝试,您会了解更多信息,我们会建议如何改进它。
  • 有些人通过例子学得更好,将来会以不同的方式思考问题。我发布了一个完整的答案,以区分 OP 与 erencan 的错误(现已删除)答案的混淆。
【解决方案2】:

没有setCharAt() 方法 - 请参阅javadoc。这是因为 Java 中的字符串是不可变的——你不能改变它们,你只能创建新的。

您可以从旧字符串的块中创建一个新字符串(使用substring() 方法)并将新字符粘贴在中间,或者您可以创建一个StringBuilder可以被修改,然后从中重新生成一个字符串。

【讨论】:

    【解决方案3】:

    我相信这可以满足您的需求。

    import java.io.*;
    import java.util.Random; 
    import java.lang.reflect.Field; 
    public class XRandom{ 
    public static void changeString(String entry,char change){ 
    int length=entry.length();
    char[] cArray = entry.toCharArray();
        cArray[randomNumber(0,length)]=change;
    System.out.println(cArray);
    
        }
    
    public static void main(String[] args) {
        System.out.println("Please enter a String:");
     BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
           String name = null;
           try {
             name = br.readLine();
           } catch (IOException e) {
             System.out.println("Error!");
             System.exit(1);
           }
           char un='_';
           changeString(name,un);
        }
    
    
        public static int randomNumber(int min, int max) {
            return min + (new Random()).nextInt(max - min);
        }
    }
    

    刚刚写了这个。

    【讨论】:

      【解决方案4】:

      也许StringBuffer 类可以帮助您使用其charAt() 方法。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-03
        • 1970-01-01
        • 2020-06-07
        • 1970-01-01
        • 2020-10-04
        相关资源
        最近更新 更多