[英]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.