我正在android studio中制作一个应用程序,它可以让你跟踪你坐过山车的次数,计算出你经历了多少g力等等。
我希望在退出时保存rideCount变量,以便将其写入文件。然后当活动开始时,它将读取该文件并将其放入rideCount变量中。因为它在退出时写入,所以文件中一开始没有任何内容。
当发生这种情况时,我希望它做的是将rideCount设置为0并调用设置其他所有内容的方法,但我似乎无法将rideCount变量传递给catch位。有人能帮忙吗?
提前谢谢。

File file = new File("AltonAirCount.txt");

    try{
        Scanner input = new Scanner(file);
        int rideCountFile = input.nextInt();
        final int[] rideCount = {rideCountFile};
        onCreate2(rideCount);
    } catch (FileNotFoundException ex){
       //I want it to set rideCount to 0 here
      //I want it to call up onCreate2 and pass rideCount to it
    }}

.
    public void onBackPressed(int[] rideCount, File file) {

    try {
        PrintWriter output = new PrintWriter(file);
        output.println(rideCount);
        output.close();

    } catch (IOException ex) {


    }
}

最佳答案

rideCountFile必须在try块之前声明,才能被catch块访问。

int rideCountFile;
try{
    Scanner input = new Scanner(file);
    rideCountFile = input.nextInt();
    final int[] rideCount = {rideCountFile};
    onCreate2(rideCount);
} catch (FileNotFoundException ex){
    rideCountFile = 0;
    // call onCreate2 again if you wish
    final int[] rideCount = {rideCountFile};
    onCreate2(rideCount);
}

当然,除非您需要在后面未包含的代码中使用rideCountFile,否则在catch块中根本不需要它,因此可以将代码简化为:
try{
    Scanner input = new Scanner(file);
    int rideCountFile = input.nextInt();
    final int[] rideCount = {rideCountFile};
    onCreate2(rideCount);
} catch (FileNotFoundException ex){
    onCreate2(new int[] {0});
}

10-08 09:12