Java 将随机整数迭代到数组中
大家好,我正在尝试通过一个数组进行迭代,并用一个随机值填充每个数组元素。唯一的问题是我得到了奇怪的输出,比如 [I@4b142196 我在网站上找到了这个例子 但当在我的代码中使用它时,它将不起作用。以下是我得到的:Java 将随机整数迭代到数组中,java,arrays,Java,Arrays,大家好,我正在尝试通过一个数组进行迭代,并用一个随机值填充每个数组元素。唯一的问题是我得到了奇怪的输出,比如 [I@4b142196 我在网站上找到了这个例子 但当在我的代码中使用它时,它将不起作用。以下是我得到的: package h05GrootsteWaarde; import javax.swing.*; import java.util.*; public class GetallenGenerator extends JPanel { public GetallenGene
package h05GrootsteWaarde;
import javax.swing.*;
import java.util.*;
public class GetallenGenerator extends JPanel {
public GetallenGenerator() {
}
int[] val = new int[21];
Random generator = new Random();
public void setRandomValue() {
for (int i = 0; i < val.length; i++) {
val[i] = generator.nextInt(201) - 100;
}
}
public int[] getRandomValue() {
return val;
}
}
您正在将
int[]
添加到JTextArea
中。它显示在内存引用int[]上调用toString()
的结果
您可能应该将getRandomValue()
方法修改为如下内容:
public String getRandomValue() {
return Arrays.toString(val);
}
int[] arr = generator.getRandomValue();
String arrStr = Arrays.toString(arr);
String hoi = arrStr.substring(1, arrStr.length()-1);
您会得到一个奇怪的输出,因为数组的
toString
方法没有显示包含数组单个成员的字符串;相反,对于基元类型int
的数组,它显示一个从[I@
开始的奇怪字符串
您应该手动准备字符串,或者调用Arrays.toString(myArray)
,如下所示:
public String getRandomValue() {
return Arrays.toString(val);
}
int[] arr = generator.getRandomValue();
String arrStr = Arrays.toString(arr);
String hoi = arrStr.substring(1, arrStr.length()-1);
如果需要生成的值,则需要重写
toString
方法。
在这里,您编写的代码将为您提供内存引用,而不是生成的值。方法
generator.getRandomValue();
返回一个整数数组。因此,如果您打印它,它将打印数组的字符串表示形式
,对于数组引用,它类似于HashCode
。因此,当您尝试用空字符串附加它并将其存储在另一个字符串中时,您将无法获得所需的结果
您可能可以使用is:-
String hoi = " " + Arrays.toString(generator.getRandomValue());
但为什么要将整数数组追加并存储到字符串引用中
如果您想要一些随机值,那么您可能可以使用ArrayList
并使用Collections.shuffle
对该列表进行洗牌。如果您想要一个随机值,那么您可以首先获取值。但这不是获取随机值的非常有效的方法。因为它不够随机。t他提出的方法是:
public int[] getRandomValue() {
return val;
}
…不会从数组返回随机值-它返回数组引用本身。您可以看到[I@4b142196
string,因为这是数组的默认字符串表示形式。(第一部分表示类型;第二部分是哈希代码。)
如果你想从数组中得到一个随机值,你需要在getRandomValue
中加入一些随机性…谢谢,这就是问题所在!:)我是Java新手,所以不知道这有这么简单。唯一奇怪的是输出像是带有[]括号的[这里是随机数]。你知道如何删除它吗?(所以只显示数字?@Reshad“不知道这么简单”这并不总是那么容易-只在Java 5中添加了toString
方法。至于删除方括号,我编辑了答案以向您展示如何操作。@如果您完全正确,我编辑了答案以删除它。@Reshad这很奇怪。这是一个关于ideone.hmm的工作示例,确实奇怪!很好至少现在可以了:)我稍后会尝试修复括号谢谢!将您的答案标记为正确答案;)