Stringから最初に繰り返されない文字を印刷するのに奇妙な問題があります。私は文字列として例えば「サッソ」を入れた場合、それは正確に戻って私を与えるJavaで最初に繰り返し文字が見つからない場合
:「」
が、私は「サッサ」としようとした場合、それは私に戻っていますなぜ私が疑問に思う:「S」
public class FirstChar {
public char findFirst(String s) {
boolean[] letters = new boolean[26];
char[] firstLetter = new char[26];
for (int i = 0; i < s.length(); i++) {
if (letters[s.charAt(i) - 97] &&
(firstLetter[0] != (s.charAt(i)))) {
System.out.println(firstLetter[0]);
return firstLetter[0];
}
letters[s.charAt(i) - 97] = true;
char c = (char) (s.charAt(i));
firstLetter[i] = c;
}
System.out.println(firstLetter[1]);
return firstLetter[1];
}
public static void main(String args[]) {
FirstChar obj = new FirstChar();
obj.findFirst("sassa");
}
'' sassa "'の場合、何を期待しましたか?どの文字が返されているのか知っていますか?あなたは、デバッガで行ごとにコードをステップ実行しようとしましたか?多分あなたがすべき? –
私は次のように期待しています: 'a'は最初の繰り返しなしの文字です – Clash
「繰り返し」とは「*連続して繰り返す」を意味しますか?デバッガでコードをステップ実行して、デバッガの機能を確認してください。 –