Java 返回的不是类名,而是内存地址

Java 返回的不是类名,而是内存地址,java,Java,我试着让两支球队互相比赛。当我说team1.play(team2)时,我称之为team1.play(team2); 当我生成一个小于0.5的数字时,团队2应该获胜,如果它大于0.5,那么团队1应该获胜。当第一队获胜时,它会正确显示为尼克斯队,但当第二队获胜时,它会显示内存地址。我怎样才能正确地说网队赢了而不是输了呢team@78987neu73 public class teams{ public static void main(String [] argv){ tea

我试着让两支球队互相比赛。当我说team1.play(team2)时,我称之为team1.play(team2); 当我生成一个小于0.5的数字时,团队2应该获胜,如果它大于0.5,那么团队1应该获胜。当第一队获胜时,它会正确显示为尼克斯队,但当第二队获胜时,它会显示内存地址。我怎样才能正确地说网队赢了而不是输了呢team@78987neu73

public class teams{
    public static void main(String [] argv){
        team team1 = new team("knicks");
        team team2 = new team("nets");
        team1.lose();
        team2.win();
        team2.lose();
        team2.printrecord();
        team1.play(team2);
    }//main
}//teams

class team{
    int wins; 
    int losses;
    String name;

    public team(String n){
        name = n;
        wins = losses = 0;
    }//constructor

    public void lose(){
        losses++;
    }//losses

    public void win(){
        wins++;
    }//wins

    public void printrecord(){
        System.out.println("W-L: " +wins+"-"+losses);
    }

    public void play(team j){
        if((Math.random())<0.5){
            System.out.println("The "+j+" Have Won!");
        }//if
        else 
            System.out.println("The "+name+" Have Won!");
    }

}
公共类团队{
公共静态void main(字符串[]argv){
团队1=新团队(“尼克斯”);
团队2=新团队(“网络”);
团队1.失败();
团队2.win();
团队2.失败();
team2.printrecord();
团队1.游戏(团队2);
}//主要
}//团队
班队{
int获胜;
整数损失;
字符串名;
公共团队(字符串n){
name=n;
赢=输=0;
}//建造师
公共空间损失(){
损失++;
}//损失
公营机构{
wins++;
}//获胜
公共记录(){
系统输出打印项次(“W-L:+赢+”-“+输);
}
公开比赛(j队){
如果((Math.random())
public void play(j队){

如果((Math.random())您直接放置了
j
。请尝试使用以下代码

public void play(team j){
        if((Math.random())<0.5){
            System.out.println("The "+j.name+" Have Won!");
        }//if
        else 
            System.out.println("The "+this.name+" Have Won!");
    }
public void play(j队){

如果((Math.random())您需要在
团队
类中进行以下两项修改

public String getName() {
    return name;
}

public void play(team j){
    if((Math.random())<0.5){
        System.out.println("The "+j.getName()+" Have Won!");
    }//if
    else 
        System.out.println("The "+name+" Have Won!");
}
公共字符串getName(){
返回名称;
}
公开比赛(j队){

如果((Math.random())有很多方法可以解决您的问题,最简单的方法是直接获得
j
团队的名称,如下所示:

if((Math.random())<0.5){
    System.out.println("The "+j.name+" Have Won!"); //You should use the name of the j team
}
else {
    System.out.println("The "+name+" Have Won!");
}
如果您想更深入地了解它并遵循行业标准,那么让我们正确地构建您的
团队
类:

class Team { //class names are PascalCase

    private int wins; //encapsulate fields
    private int losses;
    private String name;

    //constructor
    public Team(String n) {
        name = n;
        wins = losses = 0;
    }

    //getter and setter methods
    public int getWins() {
        return wins;
    }

    public void setWins(int wins) {
        this.wins = wins;
    }

    public int getLosses() {
        return losses;
    }

    public void setLosses(int losses) {
        this.losses = losses;
    }

    public String getName() {
        return name;
    }

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

    public void lose() {
        setLosses(getLosses() + 1);
    }

    public void win() {
        setWins(getWins() + 1);
    }

    public void printrecord() {
        System.out.println("W-L: " + getWins() + "-" + getLosses());
    }

    public void play(Team otherTeam) { //more descriptive name
        if ((Math.random()) < 0.5) {
            System.out.println("The " + otherTeam.getName() + " Have Won!");
        }
        else {
            System.out.println("The " + this.getName() + " Have Won!");
        }
    }
}
class Team{//类名是PascalCase
private int wins;//封装字段
私人投资损失;
私有字符串名称;
//建造师
公共团队(字符串n){
name=n;
赢=输=0;
}
//getter和setter方法
public int getWins(){
回归胜利;
}
公共无效setWins(整数wins){
this.wins=wins;
}
公共投资损失(){
收益损失;
}
公共损失(整数损失){
这是损失=损失;
}
公共字符串getName(){
返回名称;
}
公共void集合名(字符串名){
this.name=名称;
}    
公共空间损失(){
设置损失(GetLoss()+1);
}
公营机构{
setWins(getWins()+1);
}
公共记录(){
System.out.println(“W-L:+getWins()+”-“+getloss());
}
public void play(团队其他团队){//更具描述性的名称
如果((Math.random())<0.5){
System.out.println(“The”+otherTeam.getName()+“Have wind!”);
}
否则{
System.out.println(“The”+this.getName()+“Have wind!”);
}
}
}
团队中覆盖
toString()
,下面是一个示例

@Override
public String toString(){
    return String.format("%s W-L: %d-%d",name, wins, losses);
}

这样,您的
play(team j)
就可以打印
team j
。而且,Java命名约定的类以大写字母开头。
team
应该是
team

您需要做的就是覆盖teams类中的toString功能以返回名称

只需在teams类中添加此代码

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

好的,谢谢,我忘了我应该用大写字母开始我的类。那不是内存地址。它是
hashCode()
的值。
@Override
public String toString(){
    return String.format("%s W-L: %d-%d",name, wins, losses);
}
@Override
public String toString() {
    return name;
}