Java编程-字符串类和使用方法
我正在做一个介绍的作业。到Java编程类,我想我已经差不多完成了,但我似乎做错了什么。我尝试了几种方法来修复代码,但都失败了。我不熟悉String类中的方法。我的任务是创建一个具有特定要求的英语翻译器,我在下面的代码中对其进行了注释,并使用String split()方法。我尝试输出分配的测试用例,但它没有调用我创建的方法 例如,“西班牙的雨水主要停留在平原上”假设输出为:“西班牙的ain reh主要停留在平原上” 如果您能提供有关如何修复代码的反馈/建议,我将不胜感激。多谢各位Java编程-字符串类和使用方法,java,Java,我正在做一个介绍的作业。到Java编程类,我想我已经差不多完成了,但我似乎做错了什么。我尝试了几种方法来修复代码,但都失败了。我不熟悉String类中的方法。我的任务是创建一个具有特定要求的英语翻译器,我在下面的代码中对其进行了注释,并使用String split()方法。我尝试输出分配的测试用例,但它没有调用我创建的方法 例如,“西班牙的雨水主要停留在平原上”假设输出为:“西班牙的ain reh主要停留在平原上” 如果您能提供有关如何修复代码的反馈/建议,我将不胜感激。多谢各位 public
public static void main(String[] args) {
Scanner keyboard = new Scanner(System.in);
String userInput;
System.out.println("Enter a string: ");
userInput = keyboard.nextLine();
String[] words = userInput.split("\\s+");
for (String w : words) {
System.out.print(wordConvert(w) + " ");
}
}
static boolean isVowel(char c) {
if (c.substring(0, 0).equals('a') || c.substring(0, 0).equals('e') || c.substring(0, 0).equals('i') || c.substring(0, 0).equals('o') || c.substring(0, 0).equals('u'))
return true;
else
return false;
}
public static String wordConvert(String word) {
String wordOutput = word;
String whatIsPassed = word.substring(0,0);
if (isVowel(word.substring(0, 0))) {
// vowel
wordOutput = word + "-eh";
return wordOutput;
} else {
// all consonants
if (!isVowel(word.substring(1, 1)) || (!isVowel(word.substring(1, 1)) && !isVowel(word.substring(2, 2)))) {
// escape with no changes
return wordOutput;
}
else {
// single consonant
wordOutput = word.substring(1) + "-" + word.substring(0, 0) + "eh";
return wordOutput;
}
}
}
对于
isVowel
函数,您需要
c.charAt(0) == ('a')
或长度为1的子字符串。现在,您正在将空字符串与元音列表进行比较,这将始终返回false。这类似于每次使用子字符串时,substring(x,x)
将始终为空
使用
charAt
方法更简单,因为您正在进行字符v字符比较。对于isVowel
函数,您需要
c.charAt(0) == ('a')
if (c.substring(0, 0).equals('a')...
或长度为1的子字符串。现在,您正在将空字符串与元音列表进行比较,这将始终返回false。这类似于每次使用子字符串时,substring(x,x)
将始终为空
使用charAt
方法要简单得多,因为您正在执行character v character比较
if (c.substring(0, 0).equals('a')...
是错误的,char
是一个基本类型,而不是一个对象,尽管它不能有方法char
使用=
检查是否相等。然后再次说明,char
是单个字符;不可能有子字符串
在Character
类中,有一些内置的方便方法是用Java定义的
是错误的,char
是一个基本类型,而不是一个对象,尽管它不能有方法char
使用=
检查是否相等。然后再次说明,char
是单个字符;不可能有子字符串
在
Character
类中打包了一些Java中定义的内置便利方法。您还不太了解。。。在修复了琐碎的编译器错误,并重写is元音
以获取char
并简化其逻辑后,这似乎可以正常工作:
static boolean isVowel(char c) {
switch (c) {
case 'a':
case 'e':
case 'i':
case 'o':
case 'u':
return true;
}
return false;
}
public static String wordConvert(String word) {
String wordOutput = word;
if (isVowel(word.charAt(0))) {
// vowel
wordOutput = word + "-eh";
return wordOutput;
} else {
// all consonants
if (!isVowel(word.charAt(1)) || !isVowel(word.charAt(2))) {
// escape with no changes
return wordOutput;
} else {
// single consonant
wordOutput = word.substring(1) + "-" + word.charAt(0) + "eh";
return wordOutput;
}
}
}
wordConvert
可以进一步简化为:
public static String wordConvert(String word) {
if (isVowel(word.charAt(0))) {
return word + "-eh";
}
if (!isVowel(word.charAt(1)) || !isVowel(word.charAt(2))) {
return word;
}
return word.substring(1) + "-" + word.charAt(0) + "eh";
}
你不太远。。。在修复了琐碎的编译器错误,并重写
is元音
以获取char
并简化其逻辑后,这似乎可以正常工作:
static boolean isVowel(char c) {
switch (c) {
case 'a':
case 'e':
case 'i':
case 'o':
case 'u':
return true;
}
return false;
}
public static String wordConvert(String word) {
String wordOutput = word;
if (isVowel(word.charAt(0))) {
// vowel
wordOutput = word + "-eh";
return wordOutput;
} else {
// all consonants
if (!isVowel(word.charAt(1)) || !isVowel(word.charAt(2))) {
// escape with no changes
return wordOutput;
} else {
// single consonant
wordOutput = word.substring(1) + "-" + word.charAt(0) + "eh";
return wordOutput;
}
}
}
wordConvert
可以进一步简化为:
public static String wordConvert(String word) {
if (isVowel(word.charAt(0))) {
return word + "-eh";
}
if (!isVowel(word.charAt(1)) || !isVowel(word.charAt(2))) {
return word;
}
return word.substring(1) + "-" + word.charAt(0) + "eh";
}
谢谢你的帮助!谢谢你的帮助!谢谢你的提示。代码开始让我困惑,因为我开始切换东西,并收到错误消息。谢谢你的提示。代码开始让我困惑,因为我开始切换东西,并收到错误消息。谢谢你的帮助。我开始把事情弄得一团糟,开始让我感到困惑。你让它更容易理解。在String类中,我需要更多的练习和学习方法。再次感谢。谢谢你的帮助。我开始把事情弄得一团糟,开始让我感到困惑。你让它更容易理解。在String类中,我需要更多的练习和学习方法。再次感谢。