大家好我试图通过一个数组迭代并用随机值填充每个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);
}
}
答案 0 :(得分:3)
你得到一个奇怪的输出,因为数组的toString
方法没有显示包含数组的各个成员的字符串;相反,它显示了一个奇怪的字符串,从[I@
开始,用于基本类型int
的数组。
您应手动准备字符串,或拨打Arrays.toString(myArray)
,如下所示:
int[] arr = generator.getRandomValue();
String arrStr = Arrays.toString(arr);
String hoi = arrStr.substring(1, arrStr.length()-1);
答案 1 :(得分:2)
方法generator.getRandomValue();
返回一个整数数组。因此,如果您打印它,它会打印您的数组的String Representation
,您会看到它类似于数组引用的HashCode
。因此,当您尝试使用空字符串附加它并将其存储在另一个字符串中时,您将无法获得所需的结果。
你可以使用的是: -
String hoi = " " + Arrays.toString(generator.getRandomValue());
但是为什么要追加然后将整数数组存储到String引用中?
如果您想要一些随机值,那么可能您可以使用ArrayList
并使用该列表上的Collections.shuffle
对其进行随机播放。如果您想要一个随机值,那么您可以获取first
值。但这不是获得随机值的非常有效的方法。因为它不够随意。
答案 2 :(得分:2)
方法:
public int[] getRandomValue() {
return val;
}
...不会从数组返回随机值 - 它返回数组引用本身。您将看到[I@4b142196
字符串,因为这是数组的默认字符串表示形式。 (第一部分表示类型;第二部分表示哈希码。)
如果你想从数组中获取一个随机值,你需要实际将一些随机性放入getRandomValue
......
答案 3 :(得分:0)
您正在向int[]
添加JTextArea
。它显示在int []上调用toString()
的结果,这是内存引用。
您可能应该将getRandomValue()
方法修改为以下内容:
public String getRandomValue() {
return Arrays.toString(val);
}
答案 4 :(得分:0)
如果您想要生成的值,则需要覆盖toString
方法。
在您编写的代码中,将为您提供内存引用,而不是生成的值。