Java 为什么return语句找不到my int?
当我编译下面的代码时,我得到一个错误: “找不到符号-变量wayA” 有人能解释一下原因吗Java 为什么return语句找不到my int?,java,Java,当我编译下面的代码时,我得到一个错误: “找不到符号-变量wayA” 有人能解释一下原因吗 private static int edit (String str1, String str2,int i, int j) { int len1=str1.length(); int len2 = str2.length(); if(len1==0 || len2==0) return 0; if(str1
private static int edit (String str1, String str2,int i, int j)
{
int len1=str1.length();
int len2 = str2.length();
if(len1==0 || len2==0)
return 0;
if(str1.charAt(0)==str2.charAt(0))
return edit(str1.substring(1),str2.substring(1),i,j);
int wayD =1+ edit
(str1.substring(1),str2,i,j);
if(len2>len1)
{
int wayA = 1+edit(str1+str2.charAt(0),str2.substring(0),i,j);
}
return Math.min(wayD,wayA);
// when i compile "cannot find symbol - variable wayA" why??
}
变量
wayA
是在if
块的范围中定义的,因此它只存在于if
的括号中,因此您以后无法访问它
if(len2>len1){
int wayA = 1 + edit(str1+str2.charAt(0),str2.substring(0),i,j);
}
return Math.min(wayD,wayA);
您需要在执行以下操作之前对其进行定义:
编译器找不到wayA,因为您在if块中声明了它。将int wayA的声明移出该if块。像这样:
private static int edit (String str1, String str2,int i, int j)
{
int len1=str1.length();
int len2 = str2.length();
if(len1==0 || len2==0)
return 0;
if(str1.charAt(0)==str2.charAt(0))
return edit(str1.substring(1),str2.substring(1),i,j);
int wayD = 1 + edit(str1.substring(1),str2,i,j);
int wayA = 0;
if(len2>len1)
{
wayA = 1+edit(str1+str2.charAt(0),str2.substring(0),i,j);
}
return Math.min(wayD,wayA);
wayA
是在if
块内定义的,在块外不可见。@GalYakir请接受回答,我们会花时间正确回答您的问题,您可以花10秒时间接受;)请考虑接受一个答案,这是一个论坛的运作方式,一个新用户会更容易被接受的帖子所吸引,而不是不被接受的帖子
private static int edit (String str1, String str2,int i, int j)
{
int len1=str1.length();
int len2 = str2.length();
if(len1==0 || len2==0)
return 0;
if(str1.charAt(0)==str2.charAt(0))
return edit(str1.substring(1),str2.substring(1),i,j);
int wayD = 1 + edit(str1.substring(1),str2,i,j);
int wayA = 0;
if(len2>len1)
{
wayA = 1+edit(str1+str2.charAt(0),str2.substring(0),i,j);
}
return Math.min(wayD,wayA);