java将随机整数迭代到数组中
大家好,我正在尝试通过一个数组进行迭代,并用一个随机值填充每个数组元素。唯一的问题是我得到了奇怪的输出,比如
[I@4b142196
我在Array Example上找到了这个例子
但是当在我的代码中使用它时,它将不起作用。以下是我得到的:
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;
}
}
下面是我如何调用函数的
package h05GrootsteWaarde;
import javax.swing.*;
import java.awt.event.*;
public class Bediening extends JPanel implements ActionListener {
GetallenGenerator generator;
private JButton bereken;
private JTextArea veld;
public Bediening(GetallenGenerator generator) {
this.generator = generator;
bereken = new JButton("Bereken kleinste");
bereken.addActionListener(this);
add(bereken);
veld = new JTextArea(13, 40);
veld.setEditable(false);
veld.setWrapStyleWord(true);
veld.setLineWrap(true);
add(veld);
generator.setRandomValue();
}
public void actionPerformed ( ActionEvent e ) {
String hoi = " " + generator.getRandomValue();
veld.append(hoi);
}
}
# 1 楼答案
您会得到一个奇怪的输出,因为数组的
toString
方法没有显示包含数组单个成员的字符串;相反,对于基元类型为int
的数组,它显示一个奇怪的字符串,该字符串从[I@
开始您应该手动准备字符串,或者调用
Arrays.toString(myArray)
,如下所示:# 2 楼答案
您正在将
int[]
添加到JTextArea
。它显示在内存引用int[]上调用toString()
的结果您可能应该将
getRandomValue()
方法修改为以下内容:# 3 楼答案
如果需要生成的值,则需要重写
toString
方法。 在这里,您编写的代码将为您提供内存引用,而不是生成的值# 4 楼答案
方法
generator.getRandomValue();
返回一个整数数组。因此,如果您打印它,它将打印数组的String Representation
,您看到的数组引用类似于HashCode
。因此,当您尝试用一个空字符串附加它并将其存储在另一个字符串中时,您将无法获得所需的结果您可能可以使用is:-
但为什么要将整数数组追加并存储到字符串引用中
如果您想要输出一些随机值,那么可能可以使用
ArrayList
并在该列表上使用Collections.shuffle
来洗牌它。如果需要单个随机值,则可以获取first
值。但这并不是获得随机值的非常有效的方法。因为它不够随机# 5 楼答案
方法:
。。。不会从数组返回随机值,而是返回数组引用本身。您看到的是
[I@4b142196
字符串,因为这是数组的默认字符串表示形式。(第一部分表示类型;第二部分是哈希代码。)如果你想从数组中得到一个随机值,你需要在
getRandomValue
中加入一些随机性