如何在java中使用void(class)?

时间:2016-11-27 18:47:06

标签: java class

我有一个名为Location的课程:

public class Location {

    public int x,y;

    void Location(int x, int y){
    }
}

一个叫做士兵的课程:

public class Soldier {

   String id;

   Location l1 = new Location();

   void Soldier(String id, Location l1);
}

当我打电话时:

Soldier s1 = new Soldier();

s1.Soldier("Sniper",(100,200))

从另一个班级,它说错误“找不到合适的方法”。请帮忙!

我不擅长英语,也不擅长Java,所以我很抱歉我的问题不明确。

3 个答案:

答案 0 :(得分:1)

三个主要问题:

  1. 您错误地定义了构造函数:删除前面的void

    public class Location {
    
        public int x,y;
    
        Location(int x, int y){   // *** No `void`
        }
    }
    

    (在Soldier上也一样。)

    使用void,他们不是构造函数,他们是&em>方法。

    您可能还希望它们为public,但这取决于您希望如何使用它们。

  2. 您的Soldier构造函数定义它需要一个字符串和一个Location。你没有给它那个。您可能想要创建Location

    s1.Soldier("Sniper", new Location(100,200))
    // ------------------^^^^^^^^^^^^
    
  3. 您的Soldier构造函数无效:

    void Soldier(String id, Location l1); // Invalid
    

    你之后有一个;,没有构造函数体。相反,您可能希望在那里使用参数:

    Soldier(String id, Location l1) {
        this.id = id;
        this.l1 = l1;
    }
    
  4. 您可能还想在Soldier中删除此字段的初始值设定项:

    Location l1 = new Location();
    

    ,例如,

    Location l1;
    

    ...因为我们(现在)让Soldier使用其参数进行设置(感谢上面的#3)。

答案 1 :(得分:0)

Location l1 = new Location();

以上是错误的。

像这样的实例变量初始化器:

Location l1;

void Soldier(String id, Location l1){

   s1.Soldier("Sniper", new Location(100,200));

}

您必须创建Location类的实例。

这样做。

答案 2 :(得分:-1)

您需要学习的第一件事是 camelCase
2:您的位置类有一个方法名称作为构造函数名称,违反了java编程约定 的 3: 学习以下内容:类,对象,构造函数,方法,继承

班级地点{

public int x, y;

void printLocation(String loc) {
    System.out.println("Location: " + loc);
}

}

公共类士兵扩展位置{

public static void main(String[] args) {
    Soldier s1 = new Soldier();
    s1.printLocation("Syria");
}

}