Java错误;无法解析变量名称

时间:2014-09-04 23:27:23

标签: java

请原谅我提出一个非常基本的问题,我只是刚刚开始学习Java而且对我来说没有什么意义。我正在研究一些简单的练习问题,然后我遇到了这个问题:

  

给定一个字符串,我们会说前面是字符串的前3个字符。如果字符串长度小于3,则前面是那里的任何东西。返回一个前面3个副本的新字符串。

Here is the link对任何有兴趣的人。这看起来并不难,所以我写了这个;

public String front3(String str){
  if (str.length() < 3){
    String front = str;
  } else {
    String front = str.substring(0, 3);
  }
  return front + front + front;
}

这不会运行。相反,它提供了一个例外,说明无法解析名称front。什么?为什么会发生这种情况,无论是将String front在if块还是else块中初始化,都是严格的Pythonic编码器,这是没有意义的。示例代码显示了我必须将行String front;作为第二行,以初始化一个空字符串。

发生什么事情会导致这种情况无法在Java中发挥作用?尝试以Pythonista理解的方式解释它! :)

此外,我认为我会被遗忘,因为我确信这是许多初学者遇到的常见问题,并且可能已经在某处有答案了。

2 个答案:

答案 0 :(得分:4)

声明变量的范围仅限于它所在的块,因此front一旦初始化就会立即超出范围。

在任何{}内声明的任何局部变量,甚至if语句的{}都不会在{}之外显示。

if之前声明它,因此它在方法的持续时间内保持在范围内。

String front;
if (str.length() < 3){
  front = str;
} else {
  front = str.substring(0, 3);
}

答案 1 :(得分:1)

在if。

之外初始化变量
public String front3(String str){
  String front;
  if (str.length() < 3){
    front = str;
  } else {
    front = str.substring(0, 3);
  }
  return front + front + front;
}
相关问题