Я новичок, работаю над домашним заданием, которое знакомит нас с использованием файлов в Java, и я пытаюсь включить для пользователя возможность досрочного выхода, если ему не удается создать файл (например, если они не есть разрешение на запись на диск). Вот блок try catch, из которого я пытаюсь завершить программу:
// 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.txt и продолжает выполнение. Я в растерянности.
Любые идеи относительно того, что не так, или предложения по лучшему способу сделать это?
filename.equals(failstring)
-String
являются объектами, поэтому использование==
или!=
не сравнивает их адекватно - person Swadq   schedule 09.12.2012