Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么return语句找不到my int?_Java - Fatal编程技术网

Java 为什么return语句找不到my int?

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

当我编译下面的代码时,我得到一个错误:

“找不到符号-变量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.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);