Итак, я делаю игру для школьного проекта, а также требования и все, что сделано, но я пытаюсь добавить больше, добавив систему высоких баллов. В игре есть несколько трудностей, и я стараюсь сделать независимый высокий балл для каждой игры, так что, например, если вы получите высокий балл 10 на простом, то идите играть в игру на среднем уровне, ваш высокий балл «10. У меня был высокий балл, когда у всех было только один балл, но теперь, когда я пытаюсь сделать их независимыми, я не могу заставить его работать. Вот некоторые из кода (я, очевидно, не буду публиковать все это. Если вам нужен какой-либо другой код, кроме того, что я предоставил, дайте мне знать.Java - попытка перезапустить сканер
Итак, вот код, который получает высокий балл из текстового файла, и если файл еще не создан/он еще не создан, он делает его, а затем заполняет необходимую информацию, чтобы установить текущий высокий балл в ноль.
Примечание: Я делаю не считаю, что это проблема, потому что эта часть делает то, что он должен.
boolean fileLoop = true;
while(fileLoop) {
try {
scan = new Scanner(new FileReader(highScores));
scan.useLocale(Locale.US);
//System.out.println(scan.next());
while(scan.hasNext()) {
//System.out.println("loop is working");
if(easy) {
if(scan.next().toLowerCase().equals(qm + "easy" + qm)) {
if(scan.hasNextDouble()) {
highestScore = scan.nextDouble();
System.out.println(highestScore);
//System.out.println("easy score worked");
}
}
}
else if(medium) {
if(scan.next().toLowerCase().equals(qm + "medium" + qm)) {
highestScore = scan.nextDouble();
//System.out.println("medium score worked");
}
}
else if(hard) {
if(scan.next().toLowerCase().equals(qm + "hard" + qm)) {
highestScore = scan.nextDouble();
//System.out.println("hard score worked");
}
}
else if(extreme) {
if(scan.next().toLowerCase().equals(qm + "extreme" + qm)) {
highestScore = scan.nextDouble();
//System.out.println("extreme score worked");
}
}
}
fileLoop = false;
}
catch(FileNotFoundException e) {
highScores = new File("highScores.txt");
try {
writer = new BufferedWriter(new FileWriter(highScores));
writer.write(qm + "Easy" + qm + " " + "0.0");
writer.write("\n" + qm + "Medium" + qm + " " + "0.0");
writer.write("\n" + qm + "Hard" + qm + " " + "0.0");
writer.write("\n" + qm + "Extreme" + qm + " " + "0.0");
}
catch (Exception f) {
}
finally {
try {
writer.close();
} catch (Exception e1) {
e1.printStackTrace();
}
}
}
Именно этот код, который является пр oblem. Когда я тестирую его, он говорит, что scan.hasNext()
является ложным.
if(scoreCounter > highestScore) {
System.out.println("IF WORKED");
try {
scan = new Scanner(new FileReader(highScores));
writer = new BufferedWriter(new FileWriter(highScores));
while(scan.hasNext()) {
System.out.println("WHile works");
if(easy) {
System.out.println("if worked");
if(scan.next().toLowerCase().equals(qm + "easy" + qm)) {
writer.write(qm + "Easy" + qm + " " + String.valueOf(scoreCounter));
System.out.println("easy score worked");
}
}
}
}
catch (Exception e) {
e.printStackTrace();
}
finally {
try{
writer.close();
}
catch (Exception e) {
}
}
}
Теперь, поправьте меня, если я ошибаюсь, но я думал, что делает scan = new Scanner(new FileReader(highScores));
сброса сканера, так что бы начать с верхней снова. Кроме того, когда я сохраняю его как есть, он полностью удаляет все в тестовом файле.
Заранее спасибо за любую помощь
Итак, как бы вы посоветовали мне это сделать? – Ryan
Исправление. Есть ли какой-нибудь другой способ сделать это, используя ту же концепцию, что и сейчас. Поскольку я знаю, как я могу это сделать, у которого будет переменная для каждой трудности, прочитайте файл один раз, чтобы сохранить значения в указанных переменных, а затем после завершения игры перепишите весь файл. Но есть ли способ сделать это, используя только одну переменную, как сейчас? – Ryan