0

在这里,我将一个字符串分成单独的单词,然后添加"ay"到每个单词的末尾,如果它包含一个元音,但是问题是当我到达最后一个单词时indexOf-1它会被我的 if 语句自动跳过。为了解决这个问题,我尝试添加一个,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

我看到两个问题。

  • pigLatin(sentence.substring(i))应该说的两行pigLatin(sentence.substring(i+1))- 否则你只会一遍又一遍地看到相同的空间。
  • 上面写着的那一行可能else if(!word.contains("a") || ...只是说else,但如果你坚持要完整地写,你必须&&在你拥有的地方使用||
于 2013-11-03T19:23:39.523 回答