Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.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方法中返回语句?_Java - Fatal编程技术网

如何在java方法中返回语句?

如何在java方法中返回语句?,java,Java,我的情况是我不能为我的方法返回我的语句,因为我的方法不能识别我的返回语句 public static String j(){ try{ String k ="10"; System.out.println(k); } catch (Exception ignore) {} return k; // error: cannot find symbol } 错误输出: cannot find symbol symbol: variable k locati

我的情况是我不能为我的方法返回我的语句,因为我的方法不能识别我的返回语句

public static String j(){

 try{
    String k ="10";
    System.out.println(k);
    }

 catch (Exception ignore) {}

 return k; // error: cannot find symbol

}
错误输出:

cannot find symbol
symbol:   variable k
location: class DatabaseSQL
但是如果我把return语句放在try{}上,它将返回“missing return statement”

回答

 public static String j(){
 String k ="10";// put String k before and outside try{}

 try{

    System.out.println(k);

    return k; 
    }

 catch (Exception ignore) {}

}

这是因为您在
try
块中定义了
String k
,因此它将是
局部变量
无法在此块之外访问

在第二个代码中,您在
try
块中编写了
return
语句,但是
catch
上没有其他语句,因此出现了以下错误:
缺少返回语句“

因此,真正的代码需要如下所示:

public static String j(){ 
   String k ="10";
   try{
     System.out.println(k);
     }
   catch (Exception ignore) {}

return k; 
 }

这是因为您在
try
块中定义了
String k
,因此它将是
局部变量
无法在此块之外访问

在第二个代码中,您在
try
块中编写了
return
语句,但是
catch
上没有其他语句,因此出现了以下错误:
缺少返回语句“

因此,真正的代码需要如下所示:

public static String j(){ 
   String k ="10";
   try{
     System.out.println(k);
     }
   catch (Exception ignore) {}

return k; 
 }

try
块之外声明
字符串k

public static String j(){
    String k="";
    try{
        k ="10";
        System.out.println(k);
    }
     catch (Exception ignore) {}
    return k; 
}

try
块之外声明
字符串k

public static String j(){
    String k="";
    try{
        k ="10";
        System.out.println(k);
    }
     catch (Exception ignore) {}
    return k; 
}

如下定义,在第一种情况下,局部变量
k
type of
String
在try块中有一个作用域

public static String j(){
 String k ="10";
 try{
    System.out.println(k);
    }

 catch (Exception ignore) {}

 return k;    
}

在第二种情况下,如果捕获到异常,您没有返回任何内容。您要么重新抛出异常,要么返回有意义的内容。

如下定义,在第一种情况下,您的
字符串的局部变量
k
类型在try块中有一个作用域

public static String j(){
 String k ="10";
 try{
    System.out.println(k);
    }

 catch (Exception ignore) {}

 return k;    
}

在第二种情况下,如果捕获到异常,您没有返回任何内容。您要么重新抛出异常,要么返回有意义的内容。

问题在于k不是在try-and-catch之外定义的。这就是为什么它只有在try块中返回时才起作用,如果在底部也返回null,那么它的返回值就不能在try块中返回

改为这样做,它会起作用:

 public static String j(){
  String k = "";

  try{
     k ="10";
     System.out.println(k);
     }

  catch (Exception ignore) {}

  return k;

}

问题在于k没有在try-and-catch之外定义。这就是为什么它只有在try块中返回时才起作用,如果在底部也返回null,那么它的返回值就不能在try块中返回

改为这样做,它会起作用:

 public static String j(){
  String k = "";

  try{
     k ="10";
     System.out.println(k);
     }

  catch (Exception ignore) {}

  return k;

}

您需要在方法范围内声明字符串变量,如下所示:

public static String j(){
   String k = "";
   try{
       k ="10";
       System.out.println(k);
    } catch (Exception ignore) {}

    return k;
}

您需要在方法范围中声明字符串变量,如下所示:

public static String j(){
   String k = "";
   try{
       k ="10";
       System.out.println(k);
    } catch (Exception ignore) {}

    return k;
}
你可以这样试试

String k ="";
try{  
 k="10";
 System.out.println(k);
} catch (Exception ignore) {}

 return k; 
}
你可以这样试试

String k ="";
try{  
 k="10";
 System.out.println(k);
} catch (Exception ignore) {}

 return k; 
}

这是关于变量范围的。在块内声明的变量仅在该块内可见。尝试:

public static String j(){
  String k = null;
  try{
     k ="10";
     System.out.println(k);
  }

  catch (Exception ignore) {}

  return k;

}

请注意,您永远不应该只是默默地吃异常。我知道这只是一点测试代码,但是尽快改掉这个习惯,从长远来看,你会为自己省去很多痛苦

这是关于变量范围的。在块内声明的变量仅在该块内可见。尝试:

public static String j(){
  String k = null;
  try{
     k ="10";
     System.out.println(k);
  }

  catch (Exception ignore) {}

  return k;

}

请注意,您永远不应该只是默默地吃异常。我知道这只是一点测试代码,但是尽快改掉这个习惯,从长远来看,你会为自己省去很多痛苦

这是因为
k
未在
返回
行的范围内定义。您可以这样更改它:

public static String j(){ //
    String k = "10";
    try {
      System.out.println(k);
    } catch (Exception ignore) {}
    return k; 
}

如果字符串赋值应该在
try
块中,请在声明过程中为其指定一些默认值(我建议
null
),然后在
try
块中重新赋值。

这是因为
k
未在
返回
行的范围内定义。您可以这样更改它:

public static String j(){ //
    String k = "10";
    try {
      System.out.println(k);
    } catch (Exception ignore) {}
    return k; 
}

如果字符串赋值应该在
try
块中,那么在声明过程中给它一些默认值(我建议
null
),然后在
try
块中重新赋值。

第一次尝试时,return语句中的
k
超出了定义它的范围(在
try
块中)

在第二次尝试时,并非方法中的所有代码路径都返回值。最好在try语句之外定义
k
,并在末尾返回它

public static String j(){
    String k ="10";

     try {
        System.out.println(k);
    }    
    catch (Exception ignore) {}
    return k;     
}

第一次尝试时,return语句中的
k
超出了定义它的范围(在
try
块内)

在第二次尝试时,并非方法中的所有代码路径都返回值。最好在try语句之外定义
k
,并在末尾返回它

public static String j(){
    String k ="10";

     try {
        System.out.println(k);
    }    
    catch (Exception ignore) {}
    return k;     
}

根据您的代码,该方法返回类型为
String
的值

public static String j(){ 

您必须确保每个可能的执行路径的返回值都是已知的。如果一切正常(尝试块完成而不出错),则返回
k
。但是,如果出现故障(执行catch块),则该方法的返回值是未定义的,因为catch块中或之后没有指定值。

根据您的代码,该方法返回的值类型为
String

public static String j(){ 

您必须确保每个可能的执行路径的返回值都是已知的。如果一切正常(尝试块完成而不出错),则返回
k
。但是,如果出现故障(执行catch块),该方法的返回值是未定义的,因为catch块中或之后没有值的规范。

+1对于好的提示,无论如何,每个人似乎都给出了类似的答案,所以要归功于每个人+1对所有人回答。+1对于你的好提示,不管怎样,每个人似乎都给出了相似的答案,所以要归功于每个人+一对一回答。