0

当使用交互面板运行我的代码时,我在结果之前得到一个空值。例如当我输入:第一个词 - 谷歌第二个词 - 铬

结果应该是 - gcohorgolme 但它是 - nullgcohorgolme

任何想法为什么?这是我的代码:

public class Collate{
  String result;
  String x;
  String y; 

  public String collate(String x, String y){

    for(int i = 0; i < x.length(); i++)
    {
      result += x.charAt(i);
      result += y.charAt(i);
    }
    return (result);
  }
}

非常感谢!

4

7 回答 7

7

确保初始化result

  public String collate(String x, String y){
    result = ""; // <-- here

    for(int i = 0; i < x.length(); i++)
    {
      result += x.charAt(i);
      result += y.charAt(i);
    }
    return (result);
  }
于 2013-09-16T02:40:04.067 回答
3

你还没有初始化你的result值。

请记住,您应该始终初始化变量。发生这种null情况是因为您的结果被初始化,然后转换为字符串,即null.

于 2013-09-16T02:41:16.710 回答
2

首先将结果初始化为空字符串。

result = "";
于 2013-09-16T02:40:48.567 回答
2

初始化您的result字符串,因为String result = "";
此步骤应始终作为预防措施,否则您最终可能会得到与null此处一样的输出。

于 2013-09-16T02:41:15.663 回答
1

您始终可以使用 StringBuffer。

public static String collate(String x, String y){

    StringBuffer result = new StringBuffer();

    for(int i = 0; i < x.length(); i++)
    {
        result.append(x.charAt(i)).append(y.charAt(i));
    }

    return (result.toString());
}
于 2013-09-16T03:22:43.367 回答
1

result += x.charAt(i) 等于 result = result + x.charAt(i)result在第一个循环时为空。

于 2013-09-16T02:42:56.500 回答
0

4.3.1 对象(来自 Java 语言规范):

字符串连接运算符+,当给定一个字符串操作数和一个引用时,它将通过调用被引用对象的 toString 方法将引用转换为字符串(如果引用或 toString 的结果为空引用,则使用“null” ),然后将生成一个新创建的字符串,它是两个字符串的连接

在这里,resultString 是用空引用初始化的。因此,要获得所需的结果,您需要将其初始化result为:

String result="";
于 2013-09-16T02:51:42.730 回答