Java编写字符串元音计数程序报错及方法返回值相关问题咨询
代码错误点汇总
- 未调用
countVowels统计方法,main方法中输出的元音数始终为初始值0 - 条件判断误用赋值运算符
=,相等判断需使用==;且charAt()返回char类型字符,需与单引号包裹的字符比较,不能用双引号的字符串 - 循环中出现未定义变量
v,string.charAt(v)应为string.charAt(i) vowels是main方法的局部变量,countVowels方法中无法直接访问,存在作用域问题- 目前的
countVowels用void声明无返回值,无法将统计结果传回main方法使用
修复后的可运行代码
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.println("Enter String: "); String string = input.nextLine(); string = string.toLowerCase(); // 调用统计方法接收返回的元音数 int vowels = countVowels(string); System.out.println("Vowels: "+ vowels); } // 修改为int返回值的方法,返回统计得到的元音数量 public static int countVowels(String string) { int vowels = 0; for (int i=0;i<string.length();i++) { char currentChar = string.charAt(i); if (currentChar == 'a' || currentChar == 'e' || currentChar == 'i' || currentChar == 'o' || currentChar == 'u') { vowels++; } } return vowels; } }
有返回值与无返回值方法说明
- 无返回值方法:方法声明时返回值位置写
void,代表方法执行完成后不会返回任何数据,仅执行内部定义的逻辑操作。你原有代码中的countVowels就属于无返回值方法。 - 有返回值方法:方法声明时需要明确指定返回值的类型(比如统计数量用int,返回字符串用String等),方法内部必须通过
return语句返回对应类型的结果,调用方可以接收这个返回值做后续处理。本次元音统计场景更适合使用有返回值方法,直接将统计结果传回调用位置。
内容的提问来源于stack exchange,提问作者user17329175
相关产品推荐
相关产品推荐

