Я пишу цикл, который выйдет, когда сканер получит значение «конец» строки. Однако при тестировании с «конечным» значением цикл продолжается. Логически, если file = input, то if (file == "end") является ложным, хотя я набрал конец! Есть ли видимые ошибки в моем коде?Вход сканера Java неравный к себе?
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);
У него есть '(! (File.equals (" end ")))' в его коде –
На самом деле все строковые литералы интернированы, поэтому в этом случае 's1 == s2' вернет true. – danben
А это проблема. Я попробовал .equals, но использовал его неправильно! Спасибо. – Graeme