0

ここでは、文字列を個別の単語に分割し"ay"、母音が含まれている場合は各単語の末尾に追加しますが、最後の単語に到達すると if ステートメントによって自動的にスキップされるという問題がindexOfあり-1ます。これを修正するために追加しようとしif (i ==-1)ましたが、デバッガーでステップスルーすると、この if ステートメントが自動的にスキップされます! 理由を知っている人はいますか?そして、この問題を回避"ay"し、最後の単語に追加するにはどうすればよいですか?.indexOf is -1

方法:

    public static void pigLatin(String sentence){
    sentence = sentence.trim();

    if(sentence.length()> 0){
        int i = sentence.indexOf(" ");
        String word = sentence.substring(0, i);
        if(i == -1){ //this  if statement is ignored
            if (word.contains("a") || word.contains("i") || word.contains("o") || word.contains("e") || word.contains("u")){
                System.out.println(word + "ay");
            } else{
                System.out.println(word);
            }
        }
        if(i != -1){
            if(word.contains("a") || word.contains("i") || word.contains("o") || word.contains("e") || word.contains("u")){
                System.out.println(word + "ay");
                pigLatin(sentence.substring(i));
            } else if(!word.contains("a") || !word.contains("i") || !word.contains("o") || !word.contains("e") || !word.contains("u")){
                System.out.println(word);
                pigLatin(sentence.substring(i));
            }
        }
    }
}

主要:

public class Main {
public static void main (String [] args){
    Scanner in = new Scanner(System.in);
    String word = in.nextLine();
    Functions.pigLatin(word);
  }
}
4

1 に答える 1

2

2 つの問題があります。

  • 言うべき2行は言うpigLatin(sentence.substring(i))べきpigLatin(sentence.substring(i+1))です-そうでなければ、同じスペースが何度も何度も表示されます.
  • と書かれている行は、else if(!word.contains("a") || ...単に言うelseことができますが、完全に書くことを主張する場合は、&&持っている場所を使用する必要があります||
于 2013-11-03T19:23:39.523 に答える