Java 我的读/写代码有什么问题
我正在尝试进行平均,并保存添加到平均值的最后一个数字,但我的代码总是在logcat中“返回”我:Java 我的读/写代码有什么问题,java,android,Java,Android,我正在尝试进行平均,并保存添加到平均值的最后一个数字,但我的代码总是在logcat中“返回”我: 07-06 08:14:44.646 9981-9981/com.example.emilio.notification E/AndroidRuntime﹕ FATAL EXCEPTION: main Process: com.example.emilio.notification, PID: 9981 java.lang.NumberFormatException: Invalid doub
07-06 08:14:44.646 9981-9981/com.example.emilio.notification E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.example.emilio.notification, PID: 9981
java.lang.NumberFormatException: Invalid double: ""
at java.lang.StringToReal.invalidReal(StringToReal.java:63)
at java.lang.StringToReal.parseDouble(StringToReal.java:267)
at java.lang.Double.parseDouble(Double.java:301)
at com.example.emilio.notification.MainActivity.stackmyArray(MainActivity.java:207)
at com.example.emilio.notification.MainActivity.writeMyArray(MainActivity.java:192)
at com.example.emilio.notification.MainActivity.access$100(MainActivity.java:47)
at com.example.emilio.notification.MainActivity$2.onClick(MainActivity.java:109)
at android.view.View.performClick(View.java:4780)
at android.view.View$PerformClick.run(View.java:19866)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5257)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
这是我的代码:(写/读文件是最后一个数字的代码,数组的写/读是平均数。我开始尝试做一个数组,但我无法追加,所以如果你的问题有一个数组而不是我的“逻辑”,它就可以了。堆栈代码是增量,所以如果我在平均数上再加一个数字,它将进行正确的除法)
根据Keppil的回答,我现在有了这个日志:
07-06 08:38:25.223 18958-18958/com.example.emilio.notification E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.example.emilio.notification, PID: 18958
java.lang.NumberFormatException: Invalid int: "��"
at java.lang.Integer.invalidInt(Integer.java:138)
at java.lang.Integer.parse(Integer.java:410)
at java.lang.Integer.parseInt(Integer.java:367)
at java.lang.Integer.parseInt(Integer.java:334)
at com.example.emilio.notification.MainActivity$2.onClick(MainActivity.java:114)
at android.view.View.performClick(View.java:4780)
at android.view.View$PerformClick.run(View.java:19866)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5257)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
在转换之前,请检查
字符串
是否为”
,但之后仍尝试转换:
if(stackread() == "")
{outputStreamWriter.write(0);}
Double stack = Double.parseDouble(stackread()) + 1;
outputStreamWriter.write(Double.toString(stack));
另外,两次调用stackread()
可能会有问题,并且您正在使用==
来比较字符串。将此更改为:
String stackRead = stackread();
if (stackRead.equals("")) {
outputStreamWriter.write(0);
} else {
Double stack = Double.parseDouble(stackRead) + 1;
outputStreamWriter.write(Double.toString(stack));
}
哪一行是207?。顺便说一下,如果不比较字符串,请使用
equals
。不要继续读,读,读文件,缓存读的值。我是一个初学者,你可以看到。如果应用程序关闭,我如何缓存读取值并保存它?String whatever=whateverToHave()
调用writeToFile()
时。你在那里写的有什么价值?我假设它是一个空字符串,这就是为什么读取失败,而”
WriteToFile不是问题所在,因为我只是在写。错误在WritetoArray中,因为我需要获取文件“value”以将其添加到新值。您是指==
问题吗?我也对此发表了评论。eduyayo,文件是空的,这就是为什么我需要与“”进行比较。这解决了OPs的第一个问题,所以我不明白你为什么要投否决票。下一个问题(parseInt
)甚至不在提供的代码中。为什么要向下投票?我以为你不明白逻辑,我觉得我需要向你解释,因为你在试图帮助我。无论如何,谢谢你。我现在将检查剩下的代码@Keppil。
String stackRead = stackread();
if (stackRead.equals("")) {
outputStreamWriter.write(0);
} else {
Double stack = Double.parseDouble(stackRead) + 1;
outputStreamWriter.write(Double.toString(stack));
}