Java中方法一致性的问题

时间:2012-06-18 14:18:59

标签: java memory-management synchronization enumeration

我真的不知道对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对象是一个数组列表,其中包含某些单词的密钥对信息。

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

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方法返回的结果也存在极端不一致。如何解决不一致问题?它与同步有关吗?

2 个答案:

答案 0 :(得分:1)

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

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

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();
}

答案 1 :(得分:1)

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


  

我真的不知道对java内存管理的蹲坐,

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

  

如何解决不一致问题?

通过不一致来澄清你的意思。这可能意味着什么。在你对这个问题有什么了解之前,它很难解决它。

  

是否与同步有关?

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

顺便说一句:我认为pstrs与另一个无关。 ;)