【问题标题】:single string list- alphabetizing单个字符串列表 - 按字母顺序排列
【发布时间】:2013-05-14 12:50:23
【问题描述】:

我正在尝试编写一个代码,该代码使用扫描仪输入一个单词列表,全部在一个字符串中,然后按字母顺序排列每个单词。我得到的只是按字母顺序排列的第一个单词,我该如何解决这个问题?

代码:

else if(answer.equals("new"))
    {
      System.out.println("Enter words, separated by commas and spaces.");
      String input= scanner.next();
      char[] words= input.toCharArray(); 
      Arrays.sort(words);
      String sorted= new String(words);
      System.out.println(sorted);

    }

结果: " ,ahy "

【问题讨论】:

    标签: java string sorting alphabetical


    【解决方案1】:

    您正在通过scanner.next() 读取字符串,然后将该字符串分解为字符。因此,正如您所说,它通过input.toCharArray() 按字符对单个字符串进行排序。您需要做的是阅读所有单词并将它们添加到String []。添加完所有单词后,使用Arrays.sort(yourStringArray) 对它们进行排序。有关以下问题的答案,请参见 cmets。

    【讨论】:

    • 那么我将如何设置 String[]?
    • String[] words= (input1, input 2, input 3..) or?
    • 是的,创建一个String [] 并将您的字符串添加到该字符串中。然后根据该数组进行排序。您可以简单地通过执行String [] ra= new String[10]; 10 之类的操作来添加是任意的。然后你可以像这样添加:ra[0]="steve"; ra[1]="hello";... 如果你跟踪你的大小,你可以添加到数组中的下一个开放槽。
    【解决方案2】:

    您需要将字符串拆分为单词而不是字符。一种选择是使用String.split。之后,您可以将这些单词重新组合成一个字符串:

    System.out.println("Enter words, separated by commas and spaces.");
    String input = scanner.nextLine();
    
    String[] words = input.split(",| ");
    Arrays.sort(words);
    
    StringBuilder sb = new StringBuilder();
    sb.append(words[0]);
    for (int i = 1; i < words.length; i++) {
        sb.append(" ");
        sb.append(words[i]);
    }
    String sorted = sb.toString();
    
    System.out.println(sorted);
    

    请注意,默认情况下,大写字母排在小写之前。如果这是个问题,请参阅this question

    【讨论】:

    • 这不是计算正确的,它正在编译,但最后没有打印出来
    • 对我来说很好。也许你周围的代码有问题? Here 是一个独立的示例供您尝试,以证明它确实有效。
    猜你喜欢
    • 2013-05-14
    • 1970-01-01
    • 2013-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多