0

このコードでファイルを選択してスキャンできない理由がわかりません。どうすればデバッグできますか?

private String[][] importMaze(){
    String fileName;
    JFileChooser fc = new JFileChooser();
    int returnVal = fc.showOpenDialog(null);
    if(returnVal == JFileChooser.APPROVE_OPTION) {
          fileName = fc.getSelectedFile().getName();

    File f = new File(fileName);
    try {
        Scanner scan = new Scanner(f);
        int rows = scan.nextInt();
        int columns = scan.nextInt();
        String [][] maze = new String[rows][columns];
        int r = 0;
        while(scan.hasNext() && r<=rows){
            for(int c = 0; c<=columns;c++){
                maze[r][c]=scan.next();
            }
            r++;
        }
        return maze;
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}
    return null;
}
4

1 に答える 1

2

コードを試しましたが、ダイアログが開いてファイルを選択できるようになりました。

私はあなたの問題がここにあると思います:

if(returnVal == JFileChooser.APPROVE_OPTION) {
      fileName = fc.getSelectedFile().getName();

File f = new File(fileName);

次のコード:

fileName = fc.getSelectedFile().getName();

完全なファイルパスではなく、ファイルの名前のみを返します。これにより、

File f = new File(fileName);

目的のファイルを開かずに、ファイルを単純に「作成」(書き出すまで実際にはファイルを作成しません)します。

あなたがする必要があるのは、これらの3行を次のように置き換えることです。

if(returnVal == JFileChooser.APPROVE_OPTION) {
  File f = fc.getSelectedFile();

これにより、fは選択したファイルを参照するようになります。

于 2010-11-13T06:15:14.680 に答える