2012-06-03 54 views
0

例如,我有一個int類型和大小爲3的數組,它具有元素1,2,3當我嘗試使用循環在JOptionPane中打印它時,它會生成三個不同的窗格。如何在JOptionPane中打印數組?

當我嘗試:

JOptionPane.showMessageDialog(null, array); 

它給垃圾值。

我到處搜索過,但找不到解決方案。如何在選項窗格中顯示數組?

+1

這不是垃圾值。你得到這個值是因爲java'Object'類有'toString'方法,像這樣:'public String toString(){ \t return getClass()。getName()+「@」+ Integer.toHexString(hashCode()); }' – gtiwari333

回答

2

使用Arrays.toString()爲:

int [] arr = new int [3]; 
    arr[0]=1; 
    arr[1]=2; 
    arr[2]=3; 

    JOptionPane.showMessageDialog(null, Arrays.toString(arr)); 
1

見你可以試試這個:

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,您肯定會得到不同的窗格。

+0

如果我想打印兩列數組? – ahmedbatty

+0

請參閱[this]上的示例(http://stackoverflow.com/questions/1399281/how-to-print-multiple-arrays-of-different-types-in-java)頁面以瞭解有關打印多個陣列的想法。 –

+0

您將不得不爲每個數組運行不同的'for'循環,每個數組追加到'StringBuilder'中,然後打印出來。 –

5
// Wrap the list in a JScrollPane if 'size matters'. 
JOptionPane.showMessageDialog(null, new JList(array)); 

E.G.

Using a JList

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它是對內存中數組的引用。

一個JList數組構造需要的對象,因此就需要Integer,而不是int ..我有一個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)); 
      } 
     }); 
    } 
}