这很奇怪,因为我写了这两个代码,实际上,它们具有相同的功能,但是您可以看到第一个代码有错误,因为您两次声明了一个TextView(名称为:wordlist),但是您可以看到第二个代码具有虽然与第一个相同,但while循环形状没有错误。
第一个代码:
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);
第二个代码:
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++;
}
您能解释第二个代码实际发生了什么吗?
最佳答案
带while循环的代码在单独的作用域中声明了两个wordList
变量,因此与第一个代码段不同,您不会遇到Duplicate local variable
错误。
您可以将while循环视为等效于:
{
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++;
}