0
所以有這樣的代碼,其是爲了比較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);
}
}
當我輸入一個名稱,如「羅伯特·格雷」或大寫字母任何東西,它似乎仍然對大寫字母排序第一。但是,當我切換主要方法體中的排序和整齊方法時,它工作正常。是否有這個原因,如何解決?
排序方法基於ASCII值對值進行排序。由於大寫字母的ascii值小於小寫字母,這就是大寫字母首先出現的原因。你可以先調用'tidy'然後對它進行排序。那會給你正確的結果。 –
非常感謝! –