这很奇怪,因为我写了这两个代码,实际上,它们具有相同的功能,但是您可以看到第一个代码有错误,因为您两次声明了一个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++;
}

10-08 03:25