嵌套for循环不返回外循环

时间:2016-07-14 12:35:30

标签: java json for-loop

我遇到了我编写的嵌套for循环问题。基本上我有一个JSON文件,我试图解析为单个变量,以便我可以将这些变量添加到数据库进行查询。

这是外圈和内圈:

for (int x = 0; x <= fixtures.length; x++) {                
    String testFixture = fixtures[x];
    testFixture = testFixture.replace("\"", "");
    testFixture = testFixture.replace("[", "");
    testFixture = testFixture.replace("{", "");
    testFixture = testFixture.replace("}", "");
    String[] singleFixture = testFixture.split(",");

    for (int i = 0; i <= singleFixture.length; i++) {
        //System.out.println(singleFixture[i]);
        String test = singleFixture[i];
        String[] fix1 = test.split(":");
        singleFixtureComplete.add(fix1[0]);
        singleFixtureComplete.add(fix1[1]);
    }
    singleFixtureComplete.add(Arrays.toString(singleFixture));
}

这是一个夹具[0]的json数组,就是它......

fixtures.length = 381.所以我希望当内循环结束时,它将返回到外循环的顶部,x将增加+1。

正在发生的事情是内循环完成,就是这样。 x不会迭代到fixtures.length,即381次。

fixture中的每个索引都是一个包含34个密钥对的JSON数组。所以singleFixture.length = 34.这是有效的,我迭代了34次。然后循环结束,外部循环被忽略。

有没有人有任何想法我在这里做错了什么?

1 个答案:

答案 0 :(得分:2)

loop没有进入下一次迭代的原因是因为try-catch子句正在捕获您的异常。查看主try-catch块外的for-loop

 //!!! The try is catching the exception for you. Remove it to see the real problem.
 try {
        URIBuilder builder = new URIBuilder("http://api.fantasydata.net/soccer/v2/json/Schedule/73");
        ...
        for (int x = 0; x <= fixtures.length; x++) {
            // Exception somewhere
        }
    }
  catch(Exception e) {

  }

问: 那么你需要做些什么才能使问题变得明显?

尝试;

  1. 评论try-catch条款
  2. throws Exception添加到main方法; public static void main(String[] args) throws Exception
  3. 这应该会留下一些堆栈跟踪以供进一步调查。

    另外,正如其他人所说,你到达那里的循环逻辑是错误的。它应该<小于而不是 <=,后者肯定会触发index out of bound例外。

    <强>理论值:

    只是一个观察 - 我认为嵌套循环是触发出界异常的索引,因此问题?作为第一步,我将首先修复两个循环逻辑。

    如果您仍然遇到问题,并希望我们查看堆栈跟踪,请发布另一个问题,我们可以进一步了解。

    很高兴能提供帮助。