2016-07-31 5 views
0

Das ist komisch, weil ich diese beiden Codes geschrieben habe, haben sie eigentlich die gleiche Funktionalität, aber Sie können sehen, die erste hat Fehler, weil Sie eine TextView (das heißt: Wortliste) für zwei Mal erklärt, aber wie Sie die zweite sehen können Code hat keinen Fehler, während das gleiche wie das erste tut, aber in Form der While-Schleife.Können wir eine Variable in einer while-Schleife in Java definieren?

Der erste Code:

int index = 0; 

    LinearLayout rootview = (LinearLayout) findViewById(R.id.numbers); 

    TextView wordList = new TextView(this); 
    wordList.setText(names.get(index)); 
    rootview.addView(wordList); 

    index++; 

    TextView wordList = new TextView(this); 
    wordList.setText(names.get(index)); 
    rootview.addView(wordList); 

Der zweite Code:

int index = 0; 
LinearLayout rootview = (LinearLayout) findViewById(R.id.numbers); 
    while(index<2) { 
     TextView wordList = new TextView(this); 
     wordList.setText(names.get(index)); 
     rootview.addView(wordList); 

     index++; 
    } 

Können Sie erklären, was eigentlich mit dem zweiten Code geschieht, dass es etwas ohne Fehler macht.

+1

Ja, es ist in Ordnung, eine Variable in einer Schleife zu erklären. Wenn Sie im zweiten Fall detaillierter angeben könnten, warum Sie * erwarten *, dass es scheitert, wäre es einfacher, Ihnen zu helfen. –

+0

'während das das gleiche tut '. Nein, es erklärt sie nur einmal. Nicht zweimal. Es gibt dann nur eine Variable. – greenapps

Antwort

1

Der Code mit der while-Schleife deklariert die beiden Variablen wordList in separaten Bereichen, sodass Sie im Gegensatz zum ersten Snippet keinen Fehler Duplicate local variable erhalten.

können Sie die while-Schleife betrachten als gleichwertig zu:

{ 
    TextView wordList = new TextView(this); 
    wordList.setText(names.get(index)); 
    rootview.addView(wordList); 

    index++; 
} 

{ 
    TextView wordList = new TextView(this); 
    wordList.setText(names.get(index)); 
    rootview.addView(wordList); 

    index++; 
} 
0

Erste Code deklarieren Sie die Variable wordList zweimal und Sie einfach kippe das tun, werden Sie Fehler wordList Variable erhalten wird bereits in ihrem Umfang definiert

Zweitens, warum Sie sich wiederholen, für Schleife dies für Sie tun

Mein Rat an Sie nicht fix Zahl in

for-Schleife verwenden, eine bessere Nutzung Länge der Namen Array

Hoffnung diese Hilfe

int index = 0; 
    LinearLayout rootview = (LinearLayout) findViewById(R.id.numbers); 
    TextView wordList ; 
     while(index<name.size()) { 
      wordList = new TextView(this); 
      wordList.setText(names.get(index)); 
      rootview.addView(wordList); 

      index++; 
     } 
+0

Bitte erklären Sie, warum Sie es aus der Schleife genommen haben. Ich mag es drinnen. Deklarieren Sie sie dort, wo Sie sie verwenden. – greenapps

Verwandte Themen