代码之家  ›  专栏  ›  技术社区  ›  JDelage

设置DRJAVA通过弗里德曼/FelasEN“小Java”工作

  •  0
  • JDelage  · 技术社区  · 16 年前

    所有的,

    我正在读弗里德曼& FelaseEn的书《一个小爪哇,一些图案》。我试图在drjava中输入示例,但是我得到了一些错误。我是个初学者,所以我可能犯了新手错误。

    以下是我的设置:

    public class ALittleJava {
      //ABSTRACT CLASS POINT
      abstract class Point {
        abstract int distanceToO();
      }
      class CartesianPt extends Point {
        int x;
        int y;
        int distanceToO(){
          return((int)Math.sqrt(x*x+y*y));
        }
        CartesianPt(int _x, int _y) {
        x=_x;
        y=_y;
        }
      }
      class ManhattanPt extends Point {
        int x;
        int y;
        int distanceToO(){
          return(x+y);
        }
        ManhattanPt(int _x, int _y){
          x=_x;
          y=_y;
        }
      }
    }

    在主队这边:

    public class Main{
      public static void main (String [] args){
        Point y = new ManhattanPt(2,8);
        System.out.println(y.distanceToO());
      }
    }

    编译器找不到符号 Point 和 ManhattanPt 在程序中。

    如果我先于每个 ALittleJava. ,我得到了另一个主要错误,即,

    需要包含alittlejava.manhattantant的封闭实例

    我试着在网上寻找资源,但这本书一定有相当机密的追随者,我找不到太多。

    谢谢大家。

    J延迟

    4 回复  |  直到 13 年前
        1
  •  0
  •   Stefan Kendall    16 年前

    做你内心的课程 static 否则,您需要从alittlejava实例访问内部类,例如 ALittleJava java = new ALittleJava() ,这似乎与您的用例不匹配。

    静止的 内部类看不到其封闭类的成员,如果类是非静态的,相反,它们可以看到其封闭类的成员,实际上需要一个封闭实例。

        2
  •  1
  •   Stefan Kendall    16 年前

    现在我想起来了,alittlejava是一个疯狂的类名,除非它是主要类。

    如果你把 public static void main( String[] args ) 内 ALittleJava ,您应该能够使用这些类。

        3
  •  1
  •   mattvonb    14 年前

    使您的文件如下所示:

    //ABSTRACT CLASS POINT
    abstract class Point {
      abstract int distanceToO();
    }
    class CartesianPt extends Point {
      int x;
      int y;
      int distanceToO(){
        return((int)Math.sqrt(x*x+y*y));
      }
      CartesianPt(int _x, int _y) {
        x=_x;
        y=_y;
      }
    }
    class ManhattanPt extends Point {
      int x;
      int y;
      int distanceToO(){
        return(x+y);
      }
      ManhattanPt(int _x, int _y){
        x=_x;
        y=_y;
      }
    }
    class Main {
      public static void main (String [] args) {
        Point y = new ManhattanPt(2,8);
        System.out.println(y.distanceToO());
      }
    }
    

    然后,在“交互”选项卡中键入以下命令:

    java Main
    
        4
  •  0
  •   Ken Liu    16 年前

    这个代码是从书中逐字复制的吗?如果是这样的话,这个结构有点非常规——通常每个文件定义一个类(point.java、cartesionpt.java等),并且在特殊情况下只能通过这种方式设置(使用内部类)。