1

我真的不知道蹲java内存管理,所以这完全是我的错,我只需要指出解决方案的方向。

我正在处理一个巨大的数据集。我有一个将字符串作为输入并返回值的方法。该值基于字符串的内容。如果我以缓慢、细化、一次性的方式执行此操作:

while (!input.equals("#")) {

        System.out.print("Input input (logical redundancy): ");
        Scanner scan = new Scanner(System.in);
        input = scan.nextLine();

        Analyzer analysis = new Analyzer(new Dictionary());
        System.out.println(analysis.analyzeString(input));
    }

没有问题,而且完全一致。对象是包含某些单词的键对信息的Dictionary数组列表。

但是,如果我尝试在更大的枚举规模上应用该方法,那么我会从分析方法返回错误数据。就比例而言,这些值在正确的范围内,但是它们与它们应该对应的字符串不对应。至少在我看来,返回的数据只是随机的。我尝试了各种尝试枚举的方法,但这就是我现在所拥有的:

while (rs.next()) {
            int id = rs.getRow();
            Analyzer analysis = new Analyzer(dict);
            String entry = rs.getString(5);
            double val = analysis.analyzeString(entry);
            pst.setDouble(1, val);
            pst.setInt(2, id);
            System.out.println(val + " : " + rs.getString(5));
            pst.executeUpdate();
}

analyzeString在该尝试中,即使输入了相同的字符串,该方法返回的结果也存在极大的不一致。我该如何解决不一致?跟同步有关系吗?

4

2 回答 2

1

首先,请定义不一致。我想你的意思是,你得到的值不是预期的。如果是这样,请在循环中打印输入和输出,看看你是否通过了你认为你正在通过的东西。我看到您正在传递查询结果第 5 列的值。Did you remember that it is not 0-based index, but 1-based index?

其次,是否可以将分析器实例化保持在循环之外?

Analyzer analysis = new Analyzer(dict);
while (rs.next()) {
            int id = rs.getRow();

            String entry = rs.getString("Use_Column_name_Here_to_be_SAFE");
            double val = analysis.analyzeString(entry);
            pst.setDouble(1, val);
            pst.setInt(2, id);
            System.out.println(id+": "+ val + " : " + entry);
            pst.executeUpdate();
}
于 2012-06-18T14:24:44.473 回答
1

要调试您的代码,我建议您使用调试器逐步完成代码。在 IDE 中,它是运行旁边的按钮。


蹲java内存管理真的不懂,

我怀疑它无论如何都与它无关。

我该如何解决不一致?

澄清你所说的不一致是什么意思。这可能意味着任何事情。除非您对问题所在有一个很好的了解,否则很难解决它。

跟同步有关系吗?

它是你的代码。如果你不知道没有人知道。我怀疑不是。

顺便说一句:我假设pst并且rs与另一个无关。;)

于 2012-06-18T14:24:53.087 回答