排序和修剪用户输入的错误

时间:2016-04-14 02:32:39

标签: java sorting

所以我有这个代码,用于比较2个用户输入是否为字谜。但是,当我运行代码并键入特定输入时,程序不会按字母顺序对输入进行排序。到目前为止,这是我的代码:

import java.util.Scanner;
import java.util.*;

public class Anagram {


  public static String sort(String s) {

    char[] sorted = s.toCharArray();
    Arrays.sort(sorted);
    return new String(sorted);
  }

  public static String tidy(String s) {

    String newInput = String.valueOf(s).toLowerCase().replaceAll("^[0-9A-Za-z]", "").trim();
    return newInput;
  }

  public static String tidy2(String s) {

    String newInput2 = String.valueOf(s).toLowerCase().replaceAll("[^0-9A-Za-z]", "").trim();
    return newInput2;
  }

  public static void main(String[] args) {

    Scanner keyboard = new Scanner(System.in);
    System.out.print("Enter line: ");
    String inputLine = keyboard.nextLine();
    System.out.print("Enter anagram: ");
    String inputAnagram = keyboard.nextLine();

    inputLine = sort(inputLine);
    inputLine = tidy(inputLine);
    inputAnagram = sort(inputAnagram);
    inputAnagram = tidy(inputAnagram);

    System.out.println(inputLine);
    System.out.println(inputAnagram);

  }
}

当我输入诸如“Robert Gray”之类的名称或任何带有大写字母的名称时,它似乎仍然首先对大写字母进行排序。但是,当我在主方法体中切换sort和tidy方法时,它工作正常。这是否有原因以及如何解决?

1 个答案:

答案 0 :(得分:0)

在sort方法中,您正在执行基于ASCII值排序的Arrays.sort方法。大写字母出现在排序顺序中的小写字母之前。然而,当你首先调用你的整洁方法然后调用它的排序方法时,因为你在字符串上调用String类方法toLowerCase,它将所有大写字母转换为小写字母。稍后当你调用sort方法时,它工作正常,因为所有的字母现在都是小的。为了解决您的问题,在调用sort方法之前,只需将输入和anagram String对象转换为小写。如果它仍然不起作用,请告诉我。