equalsでStringの値を比較する際、
同じコードでも英字では問題なく処理できるのですが
比較の値を日本語にするとうまく動作しません。
調べたところ認識が場所によって「が」と「か」+「゛」のように見かけ上同じでも文字コードが変わってしまう場合がある(http://www.javainthebox.net/laboratory/JavaSE6/normalizer/normalizer.html)
というような情報を得たのでUnicode正規化(java.text.Normalizer)も試してみましたが思うような動作にはならない(正解を入力してもfalseの処理をする)状況です。
false処理はできてしまうのでエラーは表示されていません。
ただ理想とは違う挙動なので日本語で正解を入力したらtrue処理されるようにしたいです。
(英語なら今でもtrueで処理されますが日本語で処理したいと考えています)
java
1package vegetest; 2import java.util.Scanner; 3import java.text.Normalizer; 4 5public class KNMain { 6 public static void main(String[] args) { 7 // TODO code application logic here 8 String first = "初期値"; 9 String check = "ベジータ"; 10 String normCheck = Normalizer.normalize(check, Normalizer.Form.NFC); 11 System.out.println(first); 12 System.out.println("入力まち"); 13 14 Scanner scan = new Scanner(System.in); 15 String inputWord = scan.nextLine(); 16 String normInputWord = Normalizer.normalize(inputWord, Normalizer.Form.NFC); 17 18 if (normInputWord.equals(normCheck)) { 19 first = "変更済"; 20 String second = "ベジータ"; 21 System.out.println(first); 22 System.out.println(second); 23 }else{ 24 System.out.println(first); 25 } 26 System.out.println(first); 27 System.out.println(second); 28} 29}