gpt4 book ai didi

java - pig 拉丁翻译器java

转载 作者:行者123 更新时间:2023-12-02 00:33:06 25 4
gpt4 key购买 nike

我正在开发一个 pig 拉丁语翻译器,它将给定的单词翻译成 pig 拉丁语。这里是pig Latin 方法和isVowel 方法。

public static void pigLatin(String s) {
char[] array = s.trim().toCharArray();
if(isVowel(s.charAt(0)) && !Character.toString(s.charAt(0)).equalsIgnoreCase("y")){
System.out.println(s+"way");
}else {
int i = 0;
String toReturn = "";
do {
toReturn += array[i];
i++;
}while(!isVowel(s.charAt(i)) && !Character.toString(array[i]).equalsIgnoreCase("y"));
System.out.println(s.substring(i)+toReturn+"ay");
}
}

public static boolean isVowel(char c) {
char[] vowels = new char[] {'a','e','i','o','u','y'};
for(int i = 0;i<vowels.length;i++) {
if(Character.toString(vowels[i]).equalsIgnoreCase(Character.toString(c))) {
return true;
}
}
return false;
}

问题是当我输入单词“BIrD”和“quiet”时。第一个抛出 java.lang.StringIndexOutOfBoundsException: String index out of range: 4第二个无法正确转换。 Quiet 打印 uietqay,当它应该是 ietquay 时,但这没有意义,因为,你应该将所有常量都取到元音,这应该意味着 uietquay 那么为什么它是 ietquay?有人可以指出我正确的方向吗?

注意:这不是家庭作业。

最佳答案

忽略大小写,这是“BLRD”还是“bird”?因为如果它没有元音,你的 do-while 循环不会终止,除非超出范围。

你的第二种情况,“quiet”应该是“uietqay”,除非你想添加特殊逻辑来将“qu”保持在一起。您可以在 while 条件下通过使其变得更丑来实现此目的:

while( (!isVowel(s.charAt(i)) || isQU(s, i)) && !Character.toString(array[i]).equalsIgnoreCase("y"))

然后实现适当的isQU(String s, int index)

但我建议多进行一点重写,以使代码更具可读性。事实上,我不太确定为什么你的 isVowel 检查“y”并且你的 while 条件也检查“y”。有时您使用array[i],有时您使用charAt(i)。这种不一致使您的代码更难阅读,但几乎没有任何好处。

关于java - pig 拉丁翻译器java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8493617/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com