类main的方法未定义

时间:2018-09-26 17:00:48

标签: java

我正在编写一个社交媒体的简单模型,其中用户朋友被表示为Friend对象的数组。

使用主方法中的方法toStringFriends,我得到标题错误。有人知道如何解决此问题吗?

public class Friend {

private String name;
private String password;
private int uid;
private Friend [] friends;

public Friend (String name, String password, int uid, Friend [] friends) {
    this.name = name;
    this.password = password;
    this.uid = uid;
    this.friends [0] = friends [0];

}

public Friend [] getFriends () {
    return friends;
}

public String toStringFriends (Friend [] friends) {     
    String s = "";  
    for (int i = 0; i <= friends.length; i++) {
         s = s + (friends [i]).getName();
    }
    return s;
}
}

public class Main {

public static void main(String[] args) {

    Friend [] noFriends = new Friend [0];

    Friend [] laurasFriends = new Friend [1];           

    Friend jack = new Friend ("jack","liverpool",1,noFriends);  

    laurasFriends [0] = jack;

    Friend laura = new Friend ("laura","everton",2,laurasFriends);

    String s = toStringFriends(laurasFriends);
    System.out.println(s);  

    System.out.println(toStringFriends(laura.getFriends()));
}
}

5 个答案:

答案 0 :(得分:0)

使toStringFriends()静态或实例化Friend对象并在其上调用该方法。

答案 1 :(得分:0)

您需要从laura的对象实例中调用它:

String s = laura.toStringFriends(laurasFriends);

答案 2 :(得分:0)

通过创建Friend类对象来使用它-

http://www.tribunalconstitucional.pt/tc/acordaos/tc/acordaos/?impressao=1

或将toStringFriends()设为静态,然后使用Friend类对其进行调用。

答案 3 :(得分:0)

toStringFriends可以访问friendsname,因此如果传递任何内容,我将传递一个分隔符。我也更喜欢StringBuilder而不是在循环中使用String串联。而且我在课堂上没有看到getName(),但是Friend可以访问自己的数据。然后,<=将导致数组索引超出范围,因为有效的数组索引为0friends.length - 1。所以你可以做类似的事情,

public String toStringFriends(String sep) {
    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < friends.length; i++) {
        if (i != 0) {
            sb.append(sep);
        }
        sb.append(friends[i].name);
    }
    return sb.toString();
}

然后在构造函数中将this.friends [0] = friends [0];更改为this.friends = friends;,最后像这样调用toStringFriends

String s = laura.toStringFriends(",");

答案 4 :(得分:0)

没有对象就不能调用实例或非静态方法。您应该使用一些实例对象,然后可以通过.运算符进行调用。 像object.method()