2

私は宿題に取り組んでいる初心者で、Javaでファイルを使用する方法を紹介しています。ユーザーがファイルの作成に成功しなかった場合(ファイルの作成に成功しなかった場合など)、ユーザーが早期に終了するオプションを含めようとしています。ディスクへの書き込み権限があります)。これが私がプログラムを終了しようとしているtrycatchブロックです:

    // Loop used to repeat try catch block until a file is successfully created/opened
    FileWriter FW = null;       // Create & initialize the FW object outside of the loop 
                                // to ensure availability in the correct scope
    boolean success = false;
    while (success == false) {
        // Try catch block for handling possible exception thrown by the 
        // FileWriter constructor
        try {
            FW = new FileWriter(fileName);
            success = true;
        } 

        // Catch allows the user to attempt to rename file and includes option
        // to exit program immediately (presumably after multiple failed attempts)
        catch (IOException e) {
            String failString = "exit";
            fileName = (String)JOptionPane.showInputDialog(
                    "There was an error creating your file.  Please\n" +
                    "ensure you have permission to write to the directory\n" +
                    "and then re-enter your desired file name.  Please do\n" +
                    "not attempt to specify a directory.  Please do not\n" +
                    "use special characters.  Type 'exit' to end the\n" +
                    "program now.");
            if (fileName != failString) {
                fileName = fileName + ".txt";
            }

            else {
                JOptionPane.showMessageDialog(null, "Exiting...", "EXITING", 1);
                System.exit(0);
            }
        }
    }

私が思うに、ユーザーは新しいファイル名として「exit」という用語を入力すると、プログラムはすぐに終了します。ただし、exitに入ると、プログラムはexit.txtというファイルを作成し、実行を継続します。私は途方に暮れています。

何が悪いのかについてのアイデアや、これを行うためのより良い方法の提案はありますか?

4

1 に答える 1

2

equals()文字列はnot!=または。を使用して比較され==ます。

だからあなたは必要です

if (!fileName .equals(failstring)) {
  fileName = fileName + ".txt";
} else {
  System.exit(1);
}

詳細については、Javaチュートリアルを参照してください:http://docs.oracle.com/javase/tutorial/java/data/comparestrings.html

ところで:通常、否定された表現よりも「肯定的な」表現を使用する方が良いです(人間の脳はそれらにうまく対処します)。したがって、以下を使用することをお勧めします。

if (fileName .equals(failstring)) {
  System.exit(1);
} else {
  fileName = fileName + ".txt";
}

代わりは

于 2012-12-09T09:29:03.170 に答える