我真的不知道对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
方法返回的结果也存在极端不一致。如何解决不一致问题?它与同步有关吗?
答案 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不知道没有人这样做。我怀疑不是。
顺便说一句:我认为pst
和rs
与另一个无关。 ;)