0

マインスイーパ ゲーム用のシンプルなハイスコア システムを作成しようとしています。ただし、ファイルが見つからないという例外が発生し続け、ファイルのフルパスも使用しようとしました。

package minesweeper;

import java.io.*;
import java.util.*;

public class Highscore{

 public static void submitHighscore(String difficulty) throws IOException{
  int easy = 99999;
  int normal = 99999;
  int hard = 99999;
  //int newScore = (int) MinesweeperView.getTime();
  int newScore = 10;
  File f = new File("Highscores.dat");

  if (!f.exists()){
   f.createNewFile();

  } 
  Scanner input = new Scanner(f); 
  PrintStream output = new PrintStream(f);

  if (input.hasNextInt()){
   easy = input.nextInt();
   normal = input.nextInt();
   hard = input.nextInt();
  }

  output.flush();



  if(difficulty.equals("easy")){
   if (easy > newScore){
   easy = newScore;
   }
  }else if (difficulty.equals("normal")){
   if (normal > newScore){
   normal = newScore;
   }
  }else if (difficulty.equals("hard")){
   if (hard > newScore){
   hard = newScore;
   }
  }
  output.println(easy);
  output.println(normal);
  output.println(hard);

 }

//temporary main method used for debugging

 public static void main(String[] args) throws IOException {
  submitHighscore("easy");
 }  

}
4

3 に答える 3

1

例外が発行されたコード行を明らかにしません。(注: 問題に関するすべての情報を投稿しないと、有用な回答が得られる可能性が低くなります。)

ただし、私の推測では、以下に示す 2 番目の呼び出しから発生していると思われます。この場合、問題はファイルを 2 回開こうとすることにあります。

Scanner input = new Scanner(f); 
PrintStream output = new PrintStream(f);
于 2011-01-14T09:43:46.990 に答える
0

これを試しましたか?

if(f.isFile()) 
   System.out.println("Yes, we have a file");

if(f.canWrite()) 
   System.out.println("Yes, we have can write to the file");
于 2011-01-14T09:45:40.070 に答える
0

ファイルが存在し、アクセス権があることを確認しましたか?

于 2011-01-14T09:42:23.807 に答える