Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我的读/写代码有什么问题_Java_Android - Fatal编程技术网

Java 我的读/写代码有什么问题

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

我正在尝试进行平均,并保存添加到平均值的最后一个数字,但我的代码总是在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 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));
}