好吧,我对java很新,但我很快就学会了(希望如此).所以无论如何这是我的问题:
我有一个字符串(例如我们将使用2.9),我需要将其更改为int或long或类似的东西,我可以用它来比较另一个数字.
据我所知,int不支持小数,我不确定是否有多长时间?如果不是,我需要知道支持小数的是什么.
这是错误:java.lang.NumberFormatException: For input string: "2.9"使用Interger.parseInt和Long.parseLong
所以任何帮助将不胜感激!
那么让我告诉你我正在尝试做什么:
我有一个记录统计数据的程序,很多很多,但它记录它们,因为它们一次发生一次并将它们放入ArrayList,例如:
请注意这是一个例子,我没有记录这些统计数据,我只是简化了一下
User clicks -> Add user_click to array
User clicks -> Add user_click to array
Key press -> Add key_press to array
在每个事件(点击,按键等)之后,它检查ArrayList的大小,如果大于150,则发生以下情况:
创建新线程
该线程被赋予ArrayList
的副本原始ArrayList是.clear() 'ed
新线程组合了类似的项目,因此user_click现在是一个数量为2的项目,而不是每个数量为1的2项目
.线程将数据处理为MySQL数据库
我很想找到一个更好的方法,虽然这很好.线程池和处理问题立即出现的问题是每天会有数千个MySQL查询,而不是先将它们组合在一起.
有没有更好的方法来实现这一目标?我的方法好吗?
要记住的另一件事是events被激活和记录的线程不能减慢,所以我真的不想在主线程中组合项目.
如果你有一些很好的代码示例,如果不是只是一个好方法的想法,那就太好了!
对于任何感兴趣的人,这个项目是在GitHub上托管的,主线程在这里,队列处理器在这里,请原谅我糟糕的命名惯例和一般代码清洁度,我仍然(总是)学习!
String filelist1[];
filelist1 = null;
for (String s : step1) {
if(s != null || !"".equals(s)) {
on = s.split(":");
if("FILE".equals(on[0])) {
filelist1[i] = on[1];
i++;
}
}
}
Run Code Online (Sandbox Code Playgroud)
为什么会导致NullPointerException?我已经确定它与某些事情有关filelist1[i] = on[1];,甚至更确切地说它只是filelist1阵列.