0

我开发了以下 for 循环来在下拉列表中设置数据。如果我在.get()方法上使用一个数字来选择和比较已单击的项目,这将非常有效,但显然这对于​​设置的整数值是无用的。

我收到“a”变量无法解析为变量的错误。

我真的不知道为什么?

这是代码:

List<String> list = new ArrayList<String>();
list.add("-");
list.add("Medical");
list.add("Business");
list.add("Family");
list.add("Other");
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, list);
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
editTime.setAdapter(dataAdapter);

for(int a = 0; a < list.size(); a ++);
{
    // Error on the 'a' variable - cannot be resolved to a variable.    
    if(typeReturned == list.get(a));
    {
        // Error on the 'a' variable - cannot be resolved to a variable.
        editTime.setSelection(a);

    }
}
4

9 回答 9

8

for循环后有一个不必要的分号:

for(int a = 0; a < list.size(); a ++);

如果不删除,就和写一样:

for(int a = 0; a < list.size(); a ++) { }
// a isn't in scope here any more.

在你的条件之后你有同样的错误if。你也必须去掉那个分号。

另外,我认为typeReturned是 a String,而您正在将其与==. 这是个坏主意。您必须使用.equals(),如果要检查两个字符串是否具有相同的内容,请参阅:

如何比较 Java 中的字符串

于 2013-01-29T17:43:43.800 回答
4

删除 for 循环末尾的分号

于 2013-01-29T17:43:47.060 回答
4

在 for 循环的末尾有一个备用分号。删除它应该可以解决问题。

于 2013-01-29T17:44:03.860 回答
4
for(int a = 0; a < list.size(); a ++);

去掉;最后的。

于 2013-01-29T17:44:30.067 回答
4

您必须删除“;” 之后for和之后if

您改进的代码:

    for(int a = 0; a < list.size(); a ++) //WITHOUT SEMICOLON !
    {

    if(typeReturned == list.get(a)) //WITHOUT SEMICOLON !
    {

         editTime.setSelection(a);
    }

    }

现在应该可以了。

于 2013-01-29T17:45:07.737 回答
3

for 后面有两个分号

for(int a = 0; a < list.size(); a ++);

还有如果之后

if(typeReturned == list.get(a));

删除两者,它会工作

于 2013-01-29T17:46:18.827 回答
2

删除iffor语句后面的分号。

for(int a = 0; a < list.size(); a ++);   
if(typeReturned == list.get(a));

for 循环和 if 语句不是完整的语句,不能在它们后面加上分号。它们是用于检查和执行其后的块或行的条件语句。

于 2013-01-29T17:48:32.407 回答
0

正如其他人所提到的,您的代码中也只有语法错误。

Java 中的分号表示语句的结束,因此您的 for 循环在遇到第一个分号的地方结束,而不管之后的花括号如何。其余代码被视为一个单独的块,变量“a”仅在 for 循环中是局部的,因此在第一个分号后不可见。

这同样适用于 if 语句后的分号。

for(int a = 0; a < list.size(); a ++);  //** REMOVE THIS SEMICOLON
    {

    // Error on the 'a' variable - cannot be resolved to a variable.    
    if(typeReturned == list.get(a));  //** REMOVE THIS SEMICOLON
    {
        // Error on the 'a' variable - cannot be resolved to a variable.
        editTime.setSelection(a);

    }

    }

希望这可以帮助。

于 2013-01-29T17:54:26.457 回答
0

从 if 和 for 语句中删除分号。

于 2013-03-21T15:08:07.820 回答