Java编译报错variable myS is already defined in method main原因求解
报错原因说明
该错误属于Java编译阶段的变量重复定义错误,触发原因和Java的变量作用域规则直接相关:
- 你首先在
main方法的顶层作用域声明了第一个String类型的局部变量myS,完成初始化:String myS = ""; - Java语法明确不允许在方法的内层代码块中,定义和外层局部变量同名的变量(不支持局部变量之间的遮蔽)。你在for循环的内层代码块中,再次使用
String myS = myS + myString;语句,加了String类型声明,相当于尝试声明和外层同名的局部变量,直接违反了语法规则,因此编译器抛出该报错。
修复方式
你实际需求是给已存在的myS变量赋值,不需要重复声明类型,直接删除循环内语句的String关键字即可:
for (int i = s; i < s + l; i++) { char tmp = memoryArray[i]; String myString = Character.toString(tmp); // 去掉重复的类型声明,直接赋值即可 myS = myS + myString; }
内容的提问来源于stack exchange,提问作者BaleKaneSon
相关产品推荐
相关产品推荐

