public class one
{
public static void main(String [] args)
{
}
public static int vowels( String s )
{
int countA = 0; int countE = 0; int countI = 0;
int countO = 0; int countU = 0;
for(int i = 0; i < s.length(); i++)
{
if(s.charAt(i) == 'a')
{
countA++;
}
else if(s.charAt(i) == 'e')
{
countE++;
}
else if(s.charAt(i) == 'i')
{
countI++;
}
else if(s.charAt(i) == 'o')
{
countO++;
}
else if(s.charAt(i) == 'u')
{
countU++;
}
}
return countA; return countE; return countI;
return countO; return countU;
}
}
我正在制作的节目将计算字符串中元音的数量。我正在尝试将其应用于main并输出结果。我试着做下面不同的回报,但它不起作用..
答案 0 :(得分:3)
您只能从方法调用返回单个值。但是,该值可以是数组或集合。
需要考虑两个选项:
第一种方法更清洁,更可重复使用(IMO),但效率较低。你有类似的东西:
String text = ...;
System.out.println("The vowel a appears " + count(text, 'a') + " times.");
System.out.println("The vowel e appears " + count(text, 'e') + " times.");
System.out.println("The vowel i appears " + count(text, 'i') + " times.");
System.out.println("The vowel o appears " + count(text, 'o') + " times.");
System.out.println("The vowel u appears " + count(text, 'u') + " times.");
...
private static int count(String text, char charToCount) {
int count = 0;
for (int i = 0; i < text.length(); i++) {
if (text.charAt(i) == charToCount) {
count++;
}
}
return count;
}
答案 1 :(得分:2)
return
语句退出您的方法并返回您指定的一个值。所有剩下的return
都是无法访问的,当你到达它们时,这个方法就已经离开了。
任何方法只有一种返回类型(读取您自己编写的方法的签名)并返回一个只能分配给单个变量的值。但是既然你没有写return coutA, countE, ...;
之类的东西,我想你不想同时将结果分配给多个变量,而是期望像Python中的yield
语句那样的类似生成器的行为。和C#提供。 Java没有内置于语言中的生成器,您必须创建一个实现java.lang.Iterable
的匿名类。
但在你的情况下没有必要这样做。你真正需要的是:
分别为每个元音调用此方法,或
使用一些容纳所有结果的容器。
对于第一个选项,您将拥有以下内容:
public static int countVowel(String str, char vowel) {
int count = 0;
for (int i = 0; i < str.length(); i++) {
if (str.charAt(i) == vowel) {
count++;
}
}
return count;
}
如果您想使用一个循环计算所有元音,可以使用数组,Map或您自己的对象以及相应的字段来存储结果并将其传递给调用者。