我的任務是寫一個名爲「推箱子」的小遊戲。在這個子任務中,我必須讓程序讀取一個文件。Java BufferedReader Consoleparameter
當我在「java推箱子」之後沒有寫東西時,它應該讀取標準地圖。 這可以工作,但是當我將「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中,ARGS [0]是不是程序名稱,它是第一個命令行參數。你的代碼應該是'args.length> 0? args [0]:「sokoban.txt」。 – VGR
@VGR我很抱歉忽略它。我誤解了程序名稱作爲參數。我編輯了答案。 – user2004685