Моя задача - написать небольшую игру под названием «Сокобан». В этой подзадаче я должен позволить программе читать файл.Java BufferedReader Consoleparameter
Когда я не пишу что-то после «java Sokoban», он должен прочитать стандартную карту. Это работает, но он также должен прочитать другой файл, когда я пишу «java Sokoban example.txt» в консоли.
Мой код для буферном читателя:
public class Sokoban {
public static void main(String[]args) throws IOException {
BufferedReader br = Files.newBufferedReader(Paths.get("sokoban.txt"));
String line = null;
int spielfeldbreite = 0;
int spielfeldhoehe = 0;
while ((line = br.readLine()) != null) {
spielfeldbreite = line.length();
spielfeldhoehe++;
}
br.close();
Scanner scan = new Scanner(System.in);
String eingabe;
int playerX = 0;
int playerY = 0;
boolean exit = false;
char[][] room = new char[spielfeldbreite][spielfeldhoehe];
br = Files.newBufferedReader(Paths.get("sokoban.txt"))
||br = Files.newBufferedReader(Paths.get(args[]));
line = null;
int zeile = 0;
int zielfeld = 0;
int kiste = 0;
int kisteaufziel = 0;
int spieler = 0;
int hashtag = 0;
int leer = 0;
while ((line = br.readLine()) != null) {
for (int spalte = 0; spalte < spielfeldbreite; spalte++) {
room[spalte][zeile] = line.charAt(spalte);
switch (room[spalte][zeile]) {
case '@':
playerX = spalte;
playerY = zeile;
spieler++;
break;
case '.':
zielfeld++;
break;
case '+':
playerX = spalte;
playerY = zeile;
zielfeld++;
spieler++;
break;
case '*':
zielfeld++;
kiste++;
kisteaufziel++;
break;
case '$':
kiste++;
break;
case '#':
hashtag++;
break;
case ' ':
leer++;
break;
default:
System.out.println("Illegal symbol!");
line = null;
break;
}
}
zeile++;
}
br.close();
Я надеюсь, что все понятно. Заранее благодарю вас
Java отличается от C. В Java, арг [0] не название программы, это первый аргумент командной строки. Ваш код должен быть 'args.length> 0? args [0]: "sokoban.txt" '. – VGR
@VGR Прошу прощения за это. Я неправильно читаю имя программы в качестве аргумента. Я отредактировал ответ. – user2004685