2012-04-11 19 views
1

ちょっと不思議ですが、これを使って配列を逆転させようとすると、配列の逆ではなく、何らかのインコヒーレントな不器用さがいつも出てきます([[email protected]など)。それがなぜこれを行うのかについての任意のアイデア?これが起こっている理由として任意のアイデアについて整数配列を逆にする

public class Fiddle { 
    public static void main(String[] args) { 
     int[] number = {1,2,3,4,5}; 
     System.out.println(reverse(number)); 
    } 
    public static int[] reverse(int[] a) { 
     int[] b = new int[a.length]; 
     for (int i = 0; i < a.length; i++) { 
      b[a.length-1-i] = a[i]; 
     } 
     return b; 
    } 
} 

おかげで(私も何かを忘れてるので、それはおそらくです)。

+0

印刷用のバイナリ情報。印刷前に配列の各エントリをASCIIに変換する必要があります。 –

+0

http://stackoverflow.com/questions/2137755/how-do-i-reverse-an-int-array-in-java – zod

+0

なぜなら、{5,4,3 、2,1}は "[I @ 43256ea2"に解決されます。私はバイト "00 00 00 05 00 00 00 04 00 00 00 03などを想像しています..."。なぜ誰かがこの特定の出力文字列を見るのかどうかを明らかにすることはできますか? –

答えて

10

は、ユーティリティメソッドjava.util.Arrays.toString(int[])を使用します。

System.out.println(Arrays.toString(reverse(number))); 

配列クラスは "[email protected]_in_hex" である、彼らはthe default implementation provided by Objectを使う意味、Object.toString()を上書きしません。 int[]の文字列表現は[Iです。このため、この「インコヒーレントな不器用さ」が表示されています。

+0

+1スピードゴンザレス – Bohemian

+0

ああ、私は今理解しています。情報のおかげで。 – Battleroid

2

これを試してみてください:

System.out.println(Arrays.toString(reverse(number))); 

これは、Javaの「過ち」の一つだ - あなたがそうでなければ、あなたが見ているような出力を生成し、デフォルトObjectからtoString()を取得Arrays.toString()を使用する必要があり、

+0

ブリリアント、助けてくれてありがとう。 – Battleroid

1

配列のハッシュを印刷しています。あなたは

for(int i: reverse(number)){ 
    System.out.println(i); 
} 
1

Commons.lang

ArrayUtils.reverse(int[] array) 

完了のような何かをする必要があります。

関連する問題