编写第二章中的类的问题:Head First Java 2 Edition的类和对象

时间:2013-10-25 18:34:34

标签: java cmd javac notepad

我是Java的真正初学者。我被推荐了我开始阅读的Head First Java书。我按照书中的说明操作。除了记事本和cmd,我没有使用任何其他东西。  这一切都运行正常(在记事本中输入代码,将其保存为“.java”,使用javac编译器进行编译,使用java命令运行程序)直到我开始第二章:访问Objectville。

现在我陷入两难境地:如何创建相互交互的类?  如果我创建两个类并在其中任何一个上尝试javac,则错误是:“缺少return语句”。

非常感谢任何帮助。在此先感谢,感恩, 亚历克斯。

5 个答案:

答案 0 :(得分:3)

如果要在不使用记事本的情况下创建两个相互交互的类,则只需在同一文件夹中创建两个类。这是最简单的方法。

您也可以一次编译两个源文件,如下所示。

javac a.java b.java

这将编译两个java文件。

答案 1 :(得分:2)

如果您收到“缺少返回语句”,则会收到编译时错误而不是运行时错误。

您获得的编译时错误表明您的某个方法需要一个return语句,但该方法没有。要么返回预期的内容,要么将方法签名更改为void,这样它就不会期望返回值。

以下是如何编写彼此交互的多个对象的示例:

Q19597109.java

/**
 * http://stackoverflow.com/questions/19597109/problems-compiling-classes-in-chapter-two-classes-and-objects-of-head-first-jav
 */
public class Q19597109 {
  public static void main(String... args) {
    Person person = new Person();
    person.setName("Bob");

    Greeter greeter = new Greeter(person);
    greeter.sayHello();
  }
}

Person.java

/**
 * http://stackoverflow.com/questions/19597109/problems-compiling-classes-in-chapter-two-classes-and-objects-of-head-first-jav
 */
public class Person {
  private String name;

  public String getName() {
    return name;
  }

  public void setName(String name) {
    this.name = name;
  }

  @Override
  public String toString() {
    return name;
  }
}

Greeter.java

/**
 * http://stackoverflow.com/questions/19597109/problems-compiling-classes-in-chapter-two-classes-and-objects-of-head-first-jav
 */
public class Greeter {
  private final Person person;

  public Greeter(Person person) {
    this.person = person;
  }

  public void sayHello() {
    System.out.println("Hello " + person);
  }
}

如果这些文件中的每一个都在同一目录中,那么您可以这样做:

javac *.java
java Q19597109

输出结果为:

Hello Bob

答案 2 :(得分:2)

您需要提供您遇到问题的源代码。使用{}代码注释来更好地呈现它。

现在说你的问题与2个课程没有关系,因为你有一个不返回的课程。您有编译错误而不是运行时错误。如果我有一个像

这样的课程
public int add(int a, int b) {
    int c = a + b;
    return c;
}

在公开承诺编译器之后你会看到“int”我将提供一个返回值。 “返回c”部分是实现这一承诺的部分。你几乎肯定错过了“c”(在这个例子中。

请提供代码,我们可以提供更多帮助

答案 3 :(得分:2)

如果你得到'缺少return语句',那是因为你的方法是以非void返回类型声明的。比如:

public someType someMethod(){
...
}

在它的身体里面没有回复声明。 你可以做两件事:

将someType更改为void或添加return someValue;你的方法

答案 4 :(得分:-1)

班级狗{

int size;
String breed;   
String name;

Void bark(){

System.out.println("Ham! Ham!");

} }

//这是第一类