Java入门作业报错:方法内变量名已定义问题求助
问题排查与解决方案
错误根因
你遇到的是Java的变量重复定义编译错误:getName方法的形参列表里已经定义了名为name的字符串变量,同一个方法的作用域内不允许重复声明同名变量,所以你在方法内部再写String name;就会触发报错。
除此之外你的代码还存在一处隐藏问题:main方法里你定义了String name;后没有初始化就直接传给getName方法,不符合Java语法规范,只是当前编译阶段优先抛出了重复定义的错误,前者修复后这个问题会紧接着触发。
修复方案
这里提供两种可行修复方式,推荐使用第一种,逻辑更简洁合理:
- 方式一:删除冗余的
getName方法形参,本来getName的作用就是读取用户输入返回,不需要接收外部参数
修复后完整代码:import java.util.Scanner; public class DebugThree3 { public static void main(String args[]) { String name = getName(); displayGreeting(name); } public static String getName() { String name; Scanner input = new Scanner(System.in); System.out.println("Enter name "); name = input.nextLine(); return name; } public static void displayGreeting(String name) { System.out.println("Hello, " + name + "!"); } } - 方式二:保留
getName的形参定义,仅删除方法内部重复的String name;声明,同时修复main方法的变量初始化问题
修复后完整代码:import java.util.Scanner; public class DebugThree3 { public static void main(String args[]) { String name = ""; // 先完成初始化 name = getName(name); displayGreeting(name); } public static String getName(String name) { Scanner input = new Scanner(System.in); System.out.println("Enter name "); name = input.nextLine(); return name; } public static void displayGreeting(String name) { System.out.println("Hello, " + name + "!"); } }
内容的提问来源于stack exchange,提问作者stillkruk
相关产品推荐
相关产品推荐

