繁体   English   中英

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

[英]In java, how would I add a string to a string variable?

我有代码生成一个随机数形式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。

您的问题是您正在将字符串初始化为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());

您得到NullPointerException,因为您将变量存储设置为null。 你应该从头开始

String storage = "";

你有两个问题:

  • 您永远不会为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吗?

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

storage += String.valueOf(binny);

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

StringBuilder buffer = new StringBuilder();

然后

buffer.append(binny);

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

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

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

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

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

storage = storage + String.valueOf(binny)

...然后阅读有关StringBuilder

尝试这个:

String storage = "";

它会抛出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());

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

storage.concat(....)

得到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());

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM