为什么在我的字符串数组中的字符串之前打印 null?

Why is null printed before the string, in my string array?

抱歉,如果这个问题在我没有看到它在堆栈溢出时被问到过,那么很抱歉。 该代码提示用户输入他们的姓名和模块标记,然后在最后将名称和模块标记打印给用户。

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。

如何避免这种情况?

把开头的name_array[0] += name;改成name_array[0] = name;

您正在向 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

同样值得注意的是,nullString 文字是 "null",例如System.out.println((String)null); 将逐字打印 null

您可能想尝试分配值而不是附加值:name_array[0] = name;