import java.util.StringTokenizer;
public class PigLatins {
String str1;
int vowelIndex;
String[] vowels = {"a","e","i","o","u","A","E","I","O","U"};
String counter = "";
public String pigLatin(String str) {
String[] result = str.split("\\s");
for (int x=0; x<result.length; x++) {
for(int i = 0;i<vowels[i].length();i++) {
if(!result[x].contains(vowels[i])) {
str1 = result[x]+"ay";
}
else if(result[x].startsWith(vowels[i])) {
str1 = result[x]+"ay";
}
for(int j = 0;j<result[x].length();j++)
if(Character.toString(result[x].charAt(j)) == vowels[i]) {
vowelIndex = j;
break;
}
if(vowelIndex > 0 && !result[x].startsWith(vowels[i]) && result[x].contains(vowels[i])) {
str1 = result[x].substring(1,vowelIndex) + result[x].substring(0,1) + "ay";
}
}
counter+=str1;
}
return counter;
}
}
在这部分result[x].substring(1,vowelIndex)
在 if 语句中,它似乎返回 null,为什么这是错误的,我该如何修复它? (我删除了驱动程序类,因为 stackoverflow 告诉我我的代码太多了)
最佳答案
你应该改变:
for(int i = 0;i<vowels[i].length();i++)
到
for(int i = 0;i<vowels.length;i++)
因为您想迭代数组中的所有元音。
vowels[i].length()
总是给你 1,因为它是元音数组中第 i 个字符串的长度。
除此之外,将元音数组从 String[] 更改为 char[] 更有意义。
关于java - 当我的代码运行时,我似乎得到一个空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26710082/