变量没有被初始化

时间:2014-01-23 05:36:30

标签: java

String firstname , middlename , lastname ;

firstname = fn.getText().substring(0,1);
middlename = mn.getText().substring(0,1);
lastname = ln.getText();

String shortname = shortname.concat(lastname); // error is in this line, shortname.concat

shortname = shortname.concat(" ");
shortname = shortname.concat(firstname);
shortname = shortname.concat(".");
shortname = shortname.concat("middlename");
shortname = shortname.concat(".");

shrt.setText(shortname);

没有其他行有任何错误。只是shortname变量未初始化。

注意:简单的解决方案请。我上课了11.把这个JAVA拿出书本。

4 个答案:

答案 0 :(得分:5)

中的右手表达式
String shortname = shortname.concat(lastname);

将在分配之前进行评估,因此当您尝试执行

shortname.concat(lastname)
那时的

shortname未初始化。要解决此问题,您必须先使用空字符串(""初始化,然后再使用它:

String shortname = "";
shortname = shortname.concat(...);

修改

正如@BrianRoach评论的那样,没有必要连接它,因为你只是将一个空字符串("")与另一个String连接起来。只是做:

String shortname = lastname;

答案 1 :(得分:0)

使用:

  String shortname = "";
  shortname = shortname.concat(lastname);

答案 2 :(得分:0)

您在宣布之前尝试使用shortname。您需要在使用它之前声明它并初始化变量。在RHS上使用shortname意味着您甚至在LHS上声明它之前就试图使用它。首先声明并初始化它,然后使用它。

String shortname = ""; // blank string, for initializing it
shortname = shortname.concat(lastname);

正如@Brian所评论的那样,如果它是一个空白字符串的concat,你也可以直接将值赋给它。这样你就不需要2个陈述。

String shortname = lastname; // Declaration and initialization, done!

答案 3 :(得分:0)

首先启动短名称

Actulally shortname doesnt contain anything to concat with.

所以为它提供一些价值,

String shortname="";
shortname = shortname.concat(lastname); 

编辑:

正如@BrianRoach在@Christians的回答中所说,我们应该将短名称初始化为

String shortname=lastname;

重视连接的目的。