![](/img/trans.png)
[英]How would I add an object with an int and a string value to an array in 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.