J'écris une boucle qui se terminera lorsque le scanner recevra la valeur de chaîne "end". Cependant, lors d'un test avec une valeur "fin", la boucle continue. Logiquement si file = l'entrée, if (file == "end") est faux, même si j'ai tapé end! Y a-t-il des erreurs visibles dans mon code?Java Scanner entrée inégale à elle-même?
String file = "";
Scanner in = new Scanner(System.in);
ArrayList<Integer> fileInput = new ArrayList<Integer>();
while(file!="end") {
// Scan for filename/end program
System.out.println("Provide the name of a file in the \"bin/\" folder, i will assume it's .txt");
file = in.nextLine();
System.out.println("." + file + ".");
if(file!="end") {
file= "bin/" + file + ".txt";
// start reading
try {
// If file found then carry on
BufferedReader openFile = new BufferedReader(new FileReader(file));
fileInput = readIn(openFile);
int lowerBound = getLower(fileInput);
int upperBound = getUpper(fileInput);
System.out.println("Lower Bound: " + lowerBound);
System.out.println("Upper Bound: " + upperBound);
// file not found
} catch (FileNotFoundException e) {
System.out.println("File not found!");
}
}
}
System.out.println("Goodbye!");
System.exit(0);
il a '(! (File.equals (" end ")))' dans son code –
En fait, tous les littéraux String sont internés, donc dans ce cas 's1 == s2' retournera true. – danben
Ah c'est le problème. J'avais essayé le .equals mais je l'ai utilisé à tort! Je vous remercie. – Graeme