[英]Iterate random integers into an Array
大家好,我正在尝试遍历数组,并用随机值填充每个Array元素。 唯一的问题是我得到了奇怪的输出
[I @ 4b142196
但是在我的代码中使用它时将无法正常工作。 这是我得到的:
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);
}
}
您会得到一个奇怪的输出,因为数组的toString
方法没有显示包含数组中各个成员的字符串。 相反,它显示了一个以[I@
开头的原始类型为int
数组的奇怪字符串。
您应该手动准备字符串,或调用Arrays.toString(myArray)
,如下所示:
int[] arr = generator.getRandomValue();
String arrStr = Arrays.toString(arr);
String hoi = arrStr.substring(1, arrStr.length()-1);
方法generator.getRandomValue();
返回一个整数数组。 因此,如果您打印它,它将打印您的数组的String Representation
,您会看到它类似于数组引用的HashCode
。 因此,当您尝试用空字符串附加它并将其存储在另一个字符串中时,将不会获得所需的结果。
您可能使用的是:-
String hoi = " " + Arrays.toString(generator.getRandomValue());
但是,为什么要追加然后将整数数组存储到String引用中呢?
如果您想要一些随机值,则可以使用ArrayList
并在该列表上使用Collections.shuffle
对其进行随机化。 如果您想要一个随机值,则可以获取第first
值。 但这不是获得随机值的非常有效的方法。 因为它不会足够随机。
方法:
public int[] getRandomValue() {
return val;
}
...不会从数组中返回随机值-它会返回数组引用本身。 您会看到[I@4b142196
字符串,因为这是数组的默认字符串表示形式。 (第一部分表示类型;第二部分是哈希码。)
如果要从数组中获取随机值,则实际上需要将一些随机性放入getRandomValue
。
您正在将int[]
添加到JTextArea
。 它显示在作为内存引用的int []上调用toString()
的结果。
您可能应该将getRandomValue()
方法修改为如下形式:
public String getRandomValue() {
return Arrays.toString(val);
}
如果需要生成的值,则需要重写toString
方法。 在这里,您编写的代码将为您提供内存引用,而不是生成的值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.