2016-04-06 11 views
3

Dies ist der Code. Ich habe versucht, es zu lösen, aber ich kann nicht verstehen, wie seine Ausgabe 111111 ist? Warum ist die Ausgabe dieses Codes 111111?

public class Test { 
     public static void main(String[] args) { 
     int list[] = {1, 2, 3, 4, 5, 6}; 

     for (int i = 1; i < list.length; i++) 
      list[i] = list[i - 1]; 

     for (int i = 0; i < list.length; i++) 
      System.out.print(list[i] + " "); 
     } 
    } 
+0

Was ist Ihr Verständnis davon, was dieser Code tut? – Maljam

+0

Seine Werte in einem Array speichern? Ich bin ein Anfänger zum Codieren, das war eine der Fragen, die ich in meinem Test fand. –

+6

Versuchen Sie es auf Papier zu verfolgen. Es beginnt bei Element eins, das 2 enthält, und setzt das Element gleich i - 1, das 1 zum Starten enthält. Und so weiter. – Logan

Antwort

1
for (int i = 1; i < list.length; i++) 
     list[i] = list[i - 1]; 

entspricht:

Liste [1] = list [1-1] = list [0] = 1
Liste [2] = list [2-1] = list [1] = 1
Liste [3] = Liste [3-1] = Liste [2] = 1
Liste [4] = Liste [4-1] = Liste [3] = 1
Liste [5 ] = Liste [5-1] = Liste [4] = 1

Haben Sie es?

0
for (int i = 1; i < list.length; i++) 
      list[i] = list[i - 1]; 

Dieser Teil des Codes verursacht Wert aller Objekte in der Liste ist 1.

When i = 1, list[1] = list[0] = 1; 
when i = 2, list[2] = list[1] = 1; //not 2 because it is already overrided when i = 1. 

.... ein dauern.

P/S: Versuchen Sie, Schritt für Schritt in Ihrem Code zu verstehen, bevor Sie Fragen stellen.

0

Es ist alles wegen dieser Schleife

for (int i = 1; i < list.length; i++) 
list[i] = list[i - 1]; 

Was ist passiert, ist Ihr erster Wert ist 1, sich nach der Schleife Es wird dieser Wert mit dem entsprechenden zweiten Element des Array list zuweist.

Das heißt, wenn Sie Ihre Liste soll als erstes Element des Arrays haben, wie diese

int list[] = {10, 2, 3, 4, 5, 6}; 

Es 10,10,10,10,10,10

0

Hallo druckt Ich werde versuchen zu erklären, was in diesem Code geschieht Schnipsel

public class Test { 
    public static void main(String[] args) { 
    int list[] = {1, 2, 3, 4, 5, 6}; 

Diese Linie ist das Äquivalent des folgenden Codes

int list[] = new int[6]; 
    list[0] = 1; 
    list[1] = 2; 
    list[2] = 3; 
    list[3] = 4; 
    list[4] = 5; 
    list[5] = 6; 


    for (int i = 1; i < list.length; i++) 
     list[i] = list[i - 1]; 

diese Schleife ist das Äquivalent des folgenden Codes

list[1] = list[0]; 
    list[2] = list[1]; 
    list[3] = list[2]; 
    list[4] = list[3]; 
    list[5] = list[4]; 

die wegen list[0] = 1 ist das Äquivalent der folgenden

list[1] = 1; 
    list[2] = 1; 
    list[3] = 1; 
    list[4] = 1; 
    list[5] = 1; 


    for (int i = 0; i < list.length; i++) 
     System.out.print(list[i] + " "); 
    } 
} 

Weswegen Sie die Ausgabe bekommen Sie bekommen

0

Wenn Sie neu in der Programmierung sind, kann das Debuggen von Druckern ein wirklich guter Weg sein, um Wha zu lernen In Ihrem Programm geht es weiter. Ich habe in einem Bündel von print-Anweisungen auf Ihrem Programm setzen, versuchen Sie es laufen und sehen, ob Sie die Ergebnisse verstehen:

public class Test { 
    public static void main(String[] args) { 
     int list[] = {1, 2, 3, 4, 5, 6}; 

     for (int i = 1; i < list.length; i++) { 
      System.out.println("\n\n\nloop number " + i); 
      System.out.println("\ni = " + i); 
      System.out.println("\nThe value at list[i] = " + list[i]); 
      System.out.println("\ni - 1 = " + (i - 1)); 
      System.out.println("\nSo I'm accessing element " + (i - 1) + 
      " in the list for this iteration."); 
      System.out.println("\nThe value at list[i - 1] = " + list[i - 1]); 
      System.out.println("\nEnd of loop " + i); 
      list[i] = list[i - 1]; 
     } 

     for (int i = 0; i < list.length; i++) 
      System.out.print(list[i] + " "); 
    } 
} 

Ich würde in der Regel nicht verwenden, dass viele für eine einfache Schleife, aber ich wollte zeigen Ihnen verschiedene Möglichkeiten, auf die Werte zuzugreifen, während die Schleife lief.

Sie werden so etwas wie dies für jede Iteration der Schleife in der Konsole erhalten, es führt Sie durch, was die Werte sind:

Loopnummer 1

i = 1

Die Wert auf Liste [i] = 2

i - 1 = 0

So 0 ich Zugriff auf Element in der Liste für diese Iteration.

Der Wert auf Liste [i - 1] = 1

Ende der Schleife 1

0

hier einen Blick auf meine Antwort nehmen:
Why am I not getting the output I am supposed to be?

sowieso ... die Antwort ist einfach ...
in der ersten Schleife, drucken Sie Ihr Array und Sie werden sehen, was mit Ihrem Array passiert
etwas wie das:

for (int i = 1; i < list.length; i++){ 
      list[i] = list[i - 1]; 
      System.out(list); 
} 
0

Als jemand bekanntgegeben, verursacht Ihre For-Schleife dieses Ergebnis (11111). Sie haben auch erwähnt, dass Ihre Frage wie folgt lautet: "Es werden Werte in einem Array gespeichert?". Nach meinem besten Verständnis für Ihre Frage ist es, als ob Sie versuchen, die Werte von einem Array zu bekommen und sie in einem anderen Array zu speichern. Wenn ja, könnte dies eine der Optionen sein.

public static void main(String []args){ 
     int[] list = {1, 2, 3, 4, 5, 6}; 
     int[] myList = new int[list.length]; 
     for (int i=0; i<list.length; i++){ 
      myList[i] = list[i]; 
     } 
     for (int i = 0; i < list.length; i++) 
      System.out.print(myList[i] + " "); 
    } 
1

Der Ausgang ist 1 1 1 1 1 1 weil die erste for Anweisung über ein Array ist Looping, genannt list, von Werten (dh {1, 2, 3, 4, 5, 6}) und jeder mit dem vorherigen Austausch des 2. beginnend (Index 1; oder , wie manche vielleicht sagen, der erste, wo der "echte" erste der 0. ist ... ich schweife ab). Somit wird der aktuelle Wert des Artikels 2 (Index 1) (2) durch den Wert des ersten Artikels (Index 0) ersetzt, der 1 lautet: (list[i] = list[i - 1];: i = 1). Dies geht weiter bis zum Ende von list. Wenn wir jeden Wert durch den vorherigen ersetzen, werden sie schließlich alle zum selben Wert - der des ersten Elements im Array, nämlich 1. Am Ende haben wir diesen Wert für unsere list: {1, 1, 1, 1, 1, 1}.

Die nächste for Anweisung druckt einfach jeden Wert des aktualisierten list nacheinander gefolgt von einem Leerzeichen: System.out.print(list[i] + " ");. Wie Sie sehen können, ist das Ergebnis dieses Codes, dass es 1 1 1 1 1 1 ausgibt.

einfach den Punkt nach Hause in einer visuellen Art und Weise zu fahren, lassen Sie sich nur die Werte des im Laufe der Zeit list Array kartieren:

int i = 1;    // i = 1 
list[i] = list[i - 1]; // list[1] = list[1 - 1]; list[0] == 1 
         // list is now {1, 1, 3, 4, 5, 6} 

i++;     // i = i + 1 # i is now 2 
list[i] = list[i - 1]; // list[2] = list[2 - 1]; list[1] == 1 
         // list is now {1, 1, 1, 4, 5, 6} 

i++;     // i = i + 1; i = 3 
list[i] = list[i - 1]; // list[3] = list[3 - 1]; list[2] == 1 
         // list is now {1, 1, 1, 1, 5, 6} 

i++;     // i = i + 1; i = 4 
list[i] = list[i - 1]; // list[4] = list[4 - 1]; list[3] == 1 
         // list is now {1, 1, 1, 1, 1, 6} 

i++;     // i = i + 1; i = 5 
list[i] = list[i - 1]; // list[5] = list[5 - 1]; list[4] == 1 
         // list is now {1, 1, 1, 1, 1, 1} 

i++;     // i = i + 1; i = 6 
i < list.length;  // i == 6; list.length == 6; 6 < 6 == false 
         // exit the for loop 

Ich hoffe sicher, dass helfen Sie, die Konzepte im Spiel verstehen hier ein wenig besser. Viel Glück beim Rest deines Tests!

0
int list[] = {1, 2, 3, 4, 5, 6}; 

for (int i = 1; i < list.length; i++) { 
     list[i] = list[i - 1]; 
} 

Wenn i 1 ist, ordnen Sie list[1] = list[0], hier Liste [0] -Wert 1

Dann Array aktualisiert wird {1, 1, 3, 4, 5, 6}, Schleife wieder

Wenn i 2 ist, Sie list[2] = list[1] zuweisen, hier Liste [1] Wert 1

Dann Array wird {1, 1, 1, 4, 5, 6} aktualisiert Schleife erneut

Auf diese Weise Array ov erride {1, 1, 1, 1, 1, 1}

Verwandte Themen