gpt4 book ai didi

java - 为什么我无法打破外层 for 循环?

转载 作者:行者123 更新时间:2023-12-02 11:35:02 26 4
gpt4 key购买 nike

请检查以下Android代码

public void setTitles(final List<AppDataBean> appDataBeanList){
dataBeanArrayList = new ArrayList<DataBean>();
outer:for(a=0;a<appDataBeanList.size();a++)
{
appDataBeanListIndex=a;
//Get data from the Bean list
final AppDataBean appDataBean = appDataBeanList.get(a);
if (InternetConnectivity.isConnectedToInternet(context)==true){
try {
LinkReader linkReader = new LinkReader();
linkReader.onFinish(new LinkReader.OnTaskCompleted() {
@Override
public void onTaskCompleted(ArrayList<DataBean> list) {
inner:for (int i = 0; i < list.size(); i++) {
if (InternetConnectivity.isConnectedToInternet(context)== true){
//Gather all information into DataBean
DataBean dataBean = new DataBean();
dataBean.setTitle(list.get(i).getTitle());

//Add the DataBean to the bean list
dataBeanArrayList.add(dataBean);


}

if(i==4)
{
break outer;;
}
}
}
@Override
public void onError() {
}
});
}
catch(NullPointerException e)
{
e.printStackTrace();
}
}
}
}

在这里,请注意我如何将 for 循环标记为 outerinner。在第二个循环中,我试图在满足特定条件时打破 outer 循环,但它不起作用,因为它给出了编译错误“undefined label:outer ”。

这是为什么呢?我尝试用大括号包裹 outer 内容,然后它也覆盖 inner 部分,并且我尝试不使用大括号,出现同样的错误。

最佳答案

来自Oracle docs

The break statement terminates the labeled statement; it does not transfer the flow of control to the label. Control flow is transferred to the statement immediately following the labeled (terminated) statement.

这意味着您不能将其视为goto

This帖子给出了以下示例:

first:
for( int i = 0; i < 10; i++) {
second:
for(int j = 0; j < 5; j ++ )
{
break xxx;
}
}

third:
for( int a = 0; a < 10; a++) {

}

您可以将 xxx 替换为 firstsecond,因为两个循环都在执行,但将 xxx 替换为 Third 将无法编译。

现在,在您的情况中,将在此处创建一个匿名内部类:

linkReader.onFinish(new LinkReader.OnTaskCompleted() {
@Override
public void onTaskCompleted(ArrayList<DataBean> list) {

并且您正在尝试突破此内部类的范围:

if(i==4)
{
break outer;
}

如果您将条件移到此内部类的范围之外,它就会起作用。

关于java - 为什么我无法打破外层 for 循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49001555/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com