0

たとえば、int型とサイズ3の配列があり、要素1、2、3がありJOptionPaneます。ループを使用して印刷しようとすると、3つの異なるペインが作成されます。

私が試してみると:

JOptionPane.showMessageDialog( null, array );

ガベージ値を与えます。

私はどこでも検索しましたが、解決策を見つけることができませんでした。オプションペインにアレイを表示するにはどうすればよいですか?

4

4 に答える 4

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

例えば

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は、メモリ内の配列への参照です。

..int型の配列があります

JList配列コンストラクターにはオブジェクトが必要であるため、Integerではなく必要になることに注意してくださいintint[]これを行うためにから変換するに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) );
            }
        });
    }
}
于 2012-06-03T10:15:15.790 に答える
3

使用してみてくださいArrays.toString()

JOptionPane.showMessageDialog( null, Arrays.toString(array));

Javaの配列のデフォルトのtoString()メソッドは、あなたが呼んだように、ガベージ値を出力します。

も参照してください

于 2012-06-03T10:03:55.087 に答える
2

として使用Arrays.toString ()

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

    JOptionPane.showMessageDialog(null, Arrays.toString(arr));
于 2012-06-03T10:09:05.803 に答える
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は、別のペインが作成されないためです。一度に1つずつ印刷するだけの場合Stringは、さまざまなペインを取得する必要があります。

于 2012-06-03T10:07:12.497 に答える