在java中,如何将字符串添加到字符串变量中?

时间:2012-01-31 17:14:01

标签: java string random int

我的代码生成一个0-1 3次的随机数,我需要将它添加到一个变量中,所以它变成一个二进制数。所以,理论上,这会运行三次,可能会给我101 ;

String storage = null;
        int i = 0;
        while (i < 3) {
            int binny = this.giveMeBinary();
            storage.concat(String.valueOf(binny));
            i++;
        }

        int ans = Integer.parseInt(storage);

但是当我尝试运行它时,我得到了存储的NullPointerException错误。有没有办法只是在变量中“添加”一个字符串?

方法 giveMeBinary 只返回0或1。

10 个答案:

答案 0 :(得分:10)

您的问题是您正在将字符串初始化为null。做这样的事情应该可以解决你的问题:

        String storage = "";
        int i = 0;
        while (i < 3) {
            int binny = this.giveMeBinary();
            storage += (String.valueOf(binny));
            i++;
        }

        int ans = Integer.parseInt(storage);

但是,不建议以这种方式连接字符串。您可以做的是使用StringBuilder之类的:

        StringBuilder storage = new StringBuilder();
        int i = 0;
        while (i < 3) {
            int binny = this.giveMeBinary();
            storage.append(String.valueOf(binny));
            i++;
        }

        int ans = Integer.parseInt(storage.toString());

答案 1 :(得分:1)

您将获得NullPointerException,因为您将变量storage设置为null。你应该从

开始
String storage = "";

答案 2 :(得分:1)

你有两个问题:

  • 您永远不会为storage分配非空值,但您正在调用concat方法。这将始终抛出NullPointerException

  • 您假设String.concat将修改现有字符串值。它没有。字符串在Java中是不可变的。

我建议改为使用StringBuilder,并在循环中调用append

int i = 0;
StringBuilder builder = new StringBuilder();
while (i < 3) {
    int binny = this.giveMeBinary();
    builder.append(binny);
    i++;
}
int ans = Integer.parseInt(builder.toString());

你为什么然后解析一个二进制号码,如“011”,好像它是十进制号码是另一回事。你真的想要的结果是什么?你真的想要数字0,1,10,11,100,101,110或111吗?

答案 3 :(得分:1)

如果要使用字符串连接,则只需将存储初始化为“”(空字符串),然后使用

storage += String.valueOf(binny);

但是如果你正在循环并构建字符串,你应该使用StringBuilder,因为字符串是不可变的

StringBuilder buffer = new StringBuilder();

然后

buffer.append(binny);

答案 4 :(得分:1)

如果你想要一个二进制数,即一个0到7或000之间的随机数和二进制的111。

int ans = giveMeBinary() * 4 + giveMeBinary() * 2 + giveMeBinary();

但是如果你想要一个看起来像二进制数的十进制数字。

int ans = giveMeBinary() * 100 + giveMeBinary() * 10 + giveMeBinary();

答案 5 :(得分:0)

更正NullPointerException后,请尝试以下操作:

storage = storage + String.valueOf(binny)

...然后阅读StringBuilder

答案 6 :(得分:0)

试试这个:

String storage = "";

答案 7 :(得分:0)

它会抛出NullPointerException,因为存储为空。请尝试以下

StringBuilder storage = new StringBuilder();
        int i = 0;
        while (i < 3) {
            int binny = this.giveMeBinary();
            storage.append(String.valueOf(binny));
            i++;
        }

        int ans = Integer.parseInt(storage.toString());

答案 8 :(得分:0)

变量存储未初始化。以下代码将抛出NPE

storage.concat(....)

答案 9 :(得分:0)

您获得NullPointerException的原因是“storage”变量永远不会被初始化。因此,第一次调用“storage.concat”将尝试对NullPointer执行操作。

为了进行字符串连接,你需要使用像StringBuilder这样的可变类,String类是不可变的(你不能修改它的实例)。

以下是使用StringBuilder的示例:

StringBuilder storage = new StringBuilder();
int i = 0;
while (i < 3) {
   int binny = this.giveMeBinary();
   storage.append(binny);
   i++;
}

int ans = Integer.parseInt(storage.toString());