【发布时间】:2017-04-29 06:34:51
【问题描述】:
我正在尝试从表中检索数据并将它们转换为双精度值以便绘制它们。第 0 列用“00:00”格式的时间值填充,第 1 列用十进制值填充。
使用此代码,我似乎已正确检索数据并将第 1 列的内容转换为双精度值,但不知道如何将具有时间值的字符串转换为双精度值以表示小时数:
int row = tableRadio.getRowCount();
for (int r = 0; r < row; r++) {
double r2 = Double.parseDouble( tableModel.getValueAt(r, 0).toString() );
double r3 = Double.parseDouble( tableModel.getValueAt(r, 1).toString() );
series.add(r2, r3);
}
在尝试绘制此数据时,我不断收到 java.lang.NumberFormatException: For input string: "0:00",据我了解,这是因为冒号不能等同于数值。但是我怎么能说“00:21”而不是显示为“0.21”或者我可以用来绘制我的数据的东西?欢迎任何建议和示例。
【问题讨论】:
-
所以,我猜您可能需要 (1) 将
String分成两个数字部分 - 可能使用String类的split方法; (2) 将两个部分都转换为数字——可能使用Integer类的parseInt方法; (3) 做一些算术 - 将分钟数除以 60(注意整数除法问题)并加上小时数。这些看起来像是您可以自己完成的三个步骤吗? -
@DawoodibnKareem 第 2 步和第 3 步似乎都是我自己能弄清楚的。然而,第 1 步对我来说有点令人困惑,因为我只使用过一次 split 方法并且不知道在这种情况下如何做。以前我拆分了扫描仪中包含的数据。您介意告诉我这一步是如何完成的吗?
-
好的,您为什么不查找 String 类的 Javadoc 以了解
split方法的工作原理? -
@DawoodibnKareem 我阅读了拆分方法,回顾了我曾经使用过的一种拆分方法,并按照您的步骤进行操作。现在一切正常,并且正在绘制我的所有数据!非常感谢您向我解释事情并在您的回复中非常耐心!你非常乐于助人。如果您愿意,请随时将这些步骤放入实际答案中,以便我接受它并且您可以获得一些积分。
-
您应该将您的答案作为答案发布,以便对其进行投票 - 而不是作为对问题的编辑。
标签: java string time double jfreechart