2017-09-22 11 views
2

「セキュリティ」などの文字列のキーがあります。アルファベットの各文字の順序を示す配列を作成したいと思います、手紙の代わりに。たとえば、 "security"という単語の場合、その配列は[5, 2, 1, 7, 4, 3, 6, 8](私がゼロから始まっていないと仮定します)です。アルファベットの文字の並びを表示します。

これは私が試してみましたものですが、それは私が必要なものを出力しない:

String key = "Security"; 

key = key.toLowerCase(); 

String alphabet = "abcdefghijklmnopqrstuvwxyz"; 

for (int i = 0; i < key.length(); i++) { 
    System.out.print(alphabet.indexOf(key.charAt(i)) + " "); 
} 

が出力:ところで

18 4 2 20 17 8 19 24 

、私はANに出力を入れていません配列は出力が私が望むものではないからです。

提案がありますか?私はこれが大部分のプログラマにとっては非常に簡単だと確信していますが、私はJavaプログラミングの初心者ですので、難しいです。あなたのalphabet

+0

同様の方法で解決できます。 "アルファベット"変数の代わりに、その文字列をソートされたバージョンのキーに変更します。 –

+0

現在アルファベットの絶対位置を出力しています( "a"は0から始まります)。これに基づいてソートする必要があります。 –

答えて

2

少し微調整は行う必要があります。

String key = "Security".toLowerCase(); 
    String alphabet = 
      // Split the key into characters. 
      Arrays.stream(key.split("")) 
      // Sort it. 
      .sorted() 
      // Put it back together into a String again. 
      .collect(Collectors.joining()); 
    for (int i = 0; i < key.length(); i++) { 
     System.out.print(alphabet.indexOf(key.charAt(i)) + 1 + " "); 
    } 
+0

ありがとうございました。あなたのコメントは私のソリューションの理解に役立ちました。乾杯 – JoeGranadino

0

をあなたは、あなたの文字列から文字列を取得し、それをソートして、文字列の各文字のためにソートされたchar配列内のインデックスを、対応する見つけることができます。

1

あなた自身の単語をchar配列に変換し、ソートしてからStringに戻すことで簡単にソートできます。

String key = "Security"; 
key = key.toLowerCase(); 

char[] charArray = key.toCharArray(); 
Arrays.sort(charArray); 

key = new String(charArray); 
関連する問題