如何在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 ofString
在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对于你的好提示,不管怎样,每个人似乎都给出了相似的答案,所以要归功于每个人+一对一回答。