1

我一直在研究一个解析和解释一些数据的程序,但是我遇到了一个问题。无论我多么努力,我似乎​​都无法消除这个错误。

代码片段:http
: //pastebin.com/0BLakSpe VetoSet.java:http://pastebin.com/8RdGKGQw 结果:http : //pastebin.com/8GfxndGw

我已经修改了代码,因此您不必费力地通过许多不相关的方法,并且我已经修改了错误消息,因此它在我发布的代码的上下文中是有意义的。

以下是想要阅读的人的完整代码:
Main.java:http://pastebin.com/FenKU6Ze VetoSet.java:http://pastebin.com/8RdGKGQw VetoParser.java*:http
: //pastebin.com / 1vTF3aXP ReadFile.java:http://pastebin.com/beV0bqPa Interpolate.java:http://pastebin.com/3CsaJdXm Utility.java:http://pastebin.com/4G8ZmYxp _ _



这是一个可编译代码的压缩包:http ://www.qfpost.com/file/d?g=KFaF7M6dk

如果有人可以帮助我解决这个问题,将不胜感激

谢谢,塔克托

* rotatePairArrays 函数添加了一些调试代码

4

2 回答 2

1

您的问题出在VetoStuff.vetoSetToPairArray()

    Pair[][] pairArray = new Pair[input[0].getVetoPairs().length][input.length];
    for(int i = 0; i < input.length; i++)
            pairArray[i] = input[i].getVetoPairs();

您已经切换了二维数组中的两个维度。由于input[0].getVetoPairs().length > input.length您的 pairArray 最后会出现一些空值。

将其更改为:

new Pair[input.length][];

(当您稍后分配它们两行时,无论如何您都会覆盖内部数组)。

于 2012-08-19T17:02:30.910 回答
0

你还没有向我们展示足够的东西。发生错误是因为ndoStuff. 导致问题的代码必须是任何调用setVetoPairs来确定 getVetoPairs 将返回的内容,但“set”调用必须在解析器内部。它使其中一个值为空。

这应该很容易通过在调试器中跟踪找到。Netbeans 在这类事情上非常出色。

过去,我因未正确处理空行而被抓住。可能是这样简单的事情。调试器可能会说清楚。

于 2012-08-19T17:11:55.960 回答