我从学习 Java 编码开始了我的冒险。我坚持书中的一个例子。它确实可以编译,但是当我运行它时没有效果。输出只是空白。我正在使用 Visual Studio 代码。该示例表明所有 3 个单独的文件(ProstyPortal、ProstyPortalGra 和 PomocnikGry)都应位于 1 个文件夹中。当我尝试使用 main 启动文件时,也没有任何反应。我决定将它们全部加入一个文件,但我仍然没有得到任何结果。代码基本上是一行战舰游戏示例。
ftp://ftp.helion.pl/przyklady/javrg2.zip - 在文件夹 r05 中有来自示例的文件(ProstyPortal、ProstyPortalGra 和 PomocnikGry)在同一个文件夹中应该可以工作,但它们不能。该死的,刚开始学习时真的很难找到问题所在:P
它是第 5 章的一个例子。
我确实遵循了书中的所有规则和建议,但即使是直接复制代码也无济于事。我之前运行的示例没有更大的问题。
import java.io.*;
class ProstyPortalGra {
public static void main(String[] args) {
int iloscRuchow = 0;
PomocnikGry pomocnik = new PomocnikGry();
ProstyPortal portal = new ProstyPortal();
int liczbaLosowa = (int) (Math.random() * 5);
int[] polozenie = {liczbaLosowa, liczbaLosowa+1, liczbaLosowa+2};
portal.setPolaPolozenia(polozenie);
boolean czyIstnieje = true;
while (czyIstnieje == true) {
String pole = pomocnik.pobierzDaneWejsciowe("Podaj liczbę");
String wynik = portal.sprawdz(pole);
iloscRuchow++;
if (wynik.equals("zatopiony")) {
czyIstnieje = false;
System.out.println(iloscRuchow + " ruchów");
} // koniec if
} // koniec while
} // koniec main
}
class ProstyPortal {
int [] polaPolozenia;
int iloscTrafien;
public void setPolaPolozenia(int[] ppol) {
polaPolozenia = ppol;
}
public String sprawdz(String stringPole) {
int strzal = Integer.parseInt(stringPole);
String wynik = "pudło";
for (int pole : polaPolozenia) {
if (strzal == pole) {
wynik = "trafiony";
iloscTrafien++;
break;
}
} // koniec pętli
if (iloscTrafien == polaPolozenia.length) {
wynik = "zatopiony";
}
System.out.println(wynik);
return wynik;
} // koniec metody
} // koniec klasy
class PomocnikGry {
public String pobierzDaneWejsciowe(String komunikat) {
String wierszWej = null;
System.out.print(komunikat + " ");
try {
BufferedReader sw = new BufferedReader(
new InputStreamReader(System.in));
wierszWej = sw.readLine();
if (wierszWej.length() == 0) return null;
} catch (IOException e) {
System.out.println("IOException: " + e);
}
return wierszWej;
}
}