【问题标题】:Word Scramble Not Scrambling Words字打乱不打乱字
【发布时间】:2017-09-22 20:13:36
【问题描述】:

这个程序应该对字符串输入中的字母进行洗牌,但它只是重复输入。我不确定我做错了什么,问题似乎出在加扰器功能上。谢谢

public static void main(String[] args) {
    Scanner in = new Scanner(System.in);
    Random r = new Random();

    while (in.hasNext()) {
        String str = in.next();
        System.out.println(str);
    }
}

//shuffle letters in word besides first and last 
public static String scrambler(String str, Random r) {

    //basic char array for input strings 
    char[] a = str.toCharArray();

    //scramble letters 
    for (int i = 0; i < a.length; i++) {
        //shuffle letters in word besides first and last 
        int j = r.nextInt(a.length);

        char temp = a[i];
        a[i] = a[j];
        a[j] = temp;
    }
    return new String(a);
}

【问题讨论】:

  • scrambler 方法工作得很好,但你的 main 方法没有调用它。

标签: java string algorithm sorting chars


【解决方案1】:

你没有调用 Scrambler 方法,你应该写

public static void main( String[] args){

  Scanner in = new Scanner(System.in);
  Random r = new Random();
  while(in.hasNext()){
    String str = in.next();
    System.out.println(scrambler(str,r));
  }

【讨论】:

  • 谢谢..如果我想保留第一个和最后一个字符,我该怎么做?
  • 我假设从 `i = 1` 开始并以 a.length -1 结束?
  • 我建议使用 r.nextInt(a.length - 2) +1 这样你就可以留下第一个和最后一个字符。请检查正确答案。
  • 我在尝试这个时遇到边界错误:r.nextInt(a.length - 2)+1
  • 当然你必须检查单词的长度(字符数组的大小)是否足够长。 nextInt( X ) 返回一个介于 0 和 X 之间的值(排除);所以如果你的词几乎是 4 个字符,我们有 4-2,所以 X 值为 2,nextInt 返回一个从 0 到 1 的值。加到它 1,你的值是 1 或 2。a[1] 是第二个字符,a[2] 是第三个。
猜你喜欢
  • 2018-03-25
  • 2023-03-14
  • 2015-07-26
  • 2020-01-31
  • 2015-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多