-2

我从学习 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;
  }
}
4

2 回答 2

0

我将这些类分成单独的文件,它们的正确名称位于同一文件夹中。仍然无法正常工作,我确实收到此错误:错误:找不到符号。

每个单独的类都会发生此错误。我检查了该线程中的所有常见错误: “找不到符号”编译错误是什么意思?

如果这意味着任何东西,文件将使用 UTF-8 编码保存。当我使用 BOM 编码保存时,我遇到了更多错误

我知道我的问题是基本的,但这真的是拒绝初学者问题的理由吗?我为回答者做研究。也许我找不到一个原因我是初学者?这意味着什么?“P

于 2018-07-04T17:36:34.347 回答
0

所以你想让它打印一些东西?如果这是问题所在,那么您必须确保测试 wynik 是否等于“zatopiony”的 if 语句实际上是正确的。如果这个 if 语句为真,你的程序只会给出一个输出。

于 2018-07-04T15:02:52.170 回答