我如何执行一个程序,只要数组/列表[idk哪个使用但我已被告知使用ArrayList我不需要预定义大小所以我会使用它]它将保持循环并一次观察或呈现一个值?
我尝试过使用while循环,但基本上我得到的都是错误,要求提供数组或说不兼容的类型或类似的东西。
while (myList!=0) //Can I actually do this? Because I didn't define a data type for my list.
if myList(0).equals ("A") //problem here is that I need to go through every index of the list. I've tried to use a counter like if myList(counter).equals ("A") but it says its incompatible types?
{
//print something.
} else if myList(0).equals ("B")
{
//print something
}
我知道这个问题有点令人困惑,但代码[即使它充满了错误]正是我想要做的。我只是不知道如何应用它。任何帮助,答案,链接,文章,教程都将受到重视。
答案 0 :(得分:4)
看起来你正在用C指针思考它。 List始终指向List,从不指向Node或类似的东西。所以你会做这样的事情:
for(String s : myList) {
if("A".equals(s)) {
} else if("B".equals(s)) {
}
}
答案 1 :(得分:2)
如果你正在使用ArrayList或List接口的其他一些实现,你将不会使用括号或括号直接访问数据,这意味着像myList [0]这样的东西是没有意义的。相反,您要做的是使用get方法,然后将其与您需要的任何值进行比较。您可以使用.size()方法获取List的长度,因此您的代码看起来像这样
for(int i=0; i<myList.size(); i++)
{
if(myList.get(i).equals("A"))
{
//print something
}
else if(myList.get(i).equals("B"))
{
//print something else
}
else
{
//print something still different
}
}
glowcoder给出的响应是一个更紧凑的语法,用于循环JavaL中的ArrayLists和其他列表,并产生更好的代码,但这就是你如何做到的语法糖。
答案 2 :(得分:0)
这个答案是否适合您的问题?
for (int i = 0; i < myList.length; i++) {
if ("A".equals(myList[i])) {
// print something.
} else if ("B".equals(myList[i])) {
// print something
}
}
答案 3 :(得分:0)
这应该是有效的,并且与你到目前为止的尝试非常接近:
int counter = 0;
while(counter < myList.size()) {
if (myList.get(counter).equals("A") )
{
//print something.
} else if (myList.get(counter).equals("B"))
{
//print something
}
counter = counter + 1;
}
请注意,这不是循环列表的首选方法,请参阅glowcoder的更优雅的答案。