通过书籍sierra k“ head first Java”学习Java。示例未运行

时间:2018-07-04 14:52:29

标签: java

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

我将这些类分为多个单独的文件,这些文件的专有名称位于同一文件夹中。仍然不起作用,我确实收到此错误:错误:找不到符号。

每个单独的类都会发生此错误。我检查了此线程的所有常见错误: What does a "Cannot find symbol" compilation error mean?

如果使用任意格式,则文件以UTF-8编码保存。当我使用BOM编码进行保存时,出现了很多错误

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