例如,我有一个类型为int且大小为3的数组,它包含元素1,2,3当我尝试在JOptionPane
中使用循环打印它时,它会生成三个不同的窗格。
当我尝试:
JOptionPane.showMessageDialog( null, array );
它给出了垃圾值。
我到处搜索,但找不到解决办法。如何在选项窗格中显示数组?
答案 0 :(得分:5)
// Wrap the list in a JScrollPane if 'size matters'.
JOptionPane.showMessageDialog(null, new JList(array));
E.G。
import javax.swing.*;
public class ArrayDisplay {
public static void main(String[] args) {
final String[] array = {
"JList",
"JTable for 2D array",
"HTML in JLabel",
"Delimited String in JLabel"
};
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
JOptionPane.showMessageDialog(null, new JList(array));
}
});
}
}
(关于数组toString()
)
它给出了垃圾值。
模糊不清,是 - 垃圾,没有。 AFAIU它是对内存中数组的引用。
..我有一个int
类型的数组
请注意,JList
数组构造函数需要对象,因此需要Integer
而不是int
。要从int[]
转换为Integer[]
,请执行以下操作:
import javax.swing.*;
public class ArrayDisplay {
public static void main(String[] args) {
int[] arrayPrimitive = {1,2,3};
final Integer[] array = new Integer[arrayPrimitive.length];
for (int ii=0; ii<arrayPrimitive.length; ii++) {
array[ii] = arrayPrimitive[ii];
}
SwingUtilities.invokeLater(new Runnable(){
@Override
public void run() {
JOptionPane.showMessageDialog( null, new JList(array) );
}
});
}
}
答案 1 :(得分:3)
尝试使用Arrays.toString()
:
JOptionPane.showMessageDialog( null, Arrays.toString(array));
Java中的数组的默认toString()
方法打印,就像你所说的那样,垃圾值。
答案 2 :(得分:2)
你可以试试这个:
StringBuilder builder = new StringBuilder(array.length);
for (int i=0;i<array.length;builder.append(array[i++])) builder.append("\n");
JOptionPane.showMessageDialog(null, builder.toString(), "Printing results", JOptionPane.INFORMATION_MESSAGE);
使用StringBuilder
的原因是它不会为您制作不同的窗格。如果您只是一次打印一个String
,则必然会得到不同的窗格。
答案 3 :(得分:2)
将Arrays.toString ()
用作:
int [] arr = new int [3];
arr[0]=1;
arr[1]=2;
arr[2]=3;
JOptionPane.showMessageDialog(null, Arrays.toString(arr));