2012-04-11 9 views
1

Nur neugierig, aber wenn ich versuche, dies zu verwenden, um ein Array umzukehren, spuckt es immer einige inkohärente Kauderwelsch statt der umgekehrten Array, wie [[email protected]. Irgendwelche Ideen, warum es das macht?Umkehrung Ganzzahl-Array

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; 
    } 
} 

Vielen Dank für alle Ideen, warum dies geschieht (es ist wahrscheinlich, weil ich dachte, etwas zu vergessen, bin).

+0

Ihre Druck-Binärinformationen. Sie müssen jeden Eintrag im Array vor dem Drucken in ASCII konvertieren. –

+0

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

+0

Einverstanden - aber nicht sofort offensichtlich für mich, warum eine Reihe von {5,4,3 , 2,1} im Speicher würde zu "[I @ 43256ea2" aufgelöst. Ich stelle mir die Bytes vor "00 00 00 05 00 00 00 04 00 00 00 03 etc ...". Kann irgendjemand etwas darüber sagen, warum wir diese spezifische Ausgabefolge sehen? –

Antwort

10

Verwenden Sie das Dienstprogramm Methode java.util.Arrays.toString(int[]):

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

Array Klassen Object.toString() nicht außer Kraft setzen, sie the default implementation provided by Object, verwenden Sie die Bedeutung "[email protected]_in_hex" ist. Die String-Darstellung des Typs int[] ist [I, weshalb Sie dieses "inkohärente Kauderwelsch" sehen.

+0

+1 Geschwindigkeit gonzales – Bohemian

+0

Ah ok, ich verstehe jetzt. Danke für die Information. – Battleroid

2

Versuchen Sie folgendes:

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

Es ist eine der „Fehler“ von Java - Sie haben Arrays.toString() zu verwenden, andernfalls Sie die Standard-toString() von Object erhalten, die Ausgabe erzeugt, wie Sie sehen,

+0

Brilliant, danke für die Hilfe. – Battleroid

1

Sie drucken den Hash des Arrays. Sie sollten so etwas wie

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

Commons.lang

ArrayUtils.reverse(int[] array) 

Erledigt tun.

Verwandte Themen