この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);
}
}
。しかし、メインメソッド本体のsortとtidyメソッドを切り替えるとうまく動作します。これには理由があり、どのように修正することができますか?
sortメソッドは、値のベースをASCII値でソートします。大文字のascii値が小文字よりも小さいので、大文字が最初に来るのはその理由です。 'tidy'を最初に呼び出してからソートすることができます。それはあなたに正しい結果を与えるでしょう。 –
ありがとう! –