很抱歉,如果在我没有看到它问到堆栈溢出之前已经问过这个问题。 代码提示用户输入其名称和模块标记,然后在最后将名称和模块标记打印给用户。
public class Main
{
public static void main( String args[] )
{
String name_array[] = new String[4];
int mark_array[] = new int[4];
System.out.println("Please enter in your name");
String name = BIO.getString();
System.out.println("Please enter in your module mark");
int mark = BIO.getInt();
name_array[0] += name;
mark_array[0] += mark;
int i = 1;
int z = 1;
while ( ! name.equals("END"))
{
while ( ! name.equals("END"))
{
System.out.println("Please enter in your name");
name = BIO.getString();
name_array[i] += name;
++i;
break;
}
while ( ! name.equals("END"))
{
System.out.println("Please enter in your module mark");
mark = BIO.getInt();
mark_array[z] += mark;
++z;
break;
}
if (i == name_array.length)
{
break;
}
}
for (int y = 0; y < name_array.length; ++y)
{
System.out.println(name_array[y] + ' ' + mark_array[y]);
}
}
}
代码在输入的字符串之前输出null。 如果我输入Harry Houdini作为名字,将打印nullHarry Houdini。
我该如何避免这种情况?
答案 0 :(得分:4)
您要将值附加到String[]
元素的默认值。
String
的默认值为null
,您的数组初始化为默认值:String name_array[] = new String[4];
。
因此,您将null[the name]
作为值。
以下是一个独立的示例:
String[] foo = new String[1];
foo[0] += "bar";
System.out.println(foo[0]);
<强>输出强>
nullbar
另外值得注意的是,String
的{{1}}字面值为null
,例如"null"
将逐字打印System.out.println((String)null);
。
您可能想尝试分配值而不是附加值:null
答案 1 :(得分:1)
在开头将name_array[0] += name;
更改为name_array[0] = name;
。