Java 如何将扫描仪对象放入参考变量中?

Java 如何将扫描仪对象放入参考变量中?,java,object,arraylist,Java,Object,Arraylist,我不知道如何格式化if语句的代码。通常,我会从用户那里获取一个字符串输入并使用.equals,但是我需要使用的对象使这变得不可能。每当我打印数组的内容时,我都会得到引用。我想获得一个存储在数组中的用户输入,并在以后的代码行中打印 问题:如果可能,如何将扫描仪输入分配给“团队”并在If语句中引用以进行比较?我应该如何分配这些值 这是给我的代码 public class Team implements Comparable<Team> { public String toString(

我不知道如何格式化if语句的代码。通常,我会从用户那里获取一个字符串输入并使用.equals,但是我需要使用的对象使这变得不可能。每当我打印数组的内容时,我都会得到引用。我想获得一个存储在数组中的用户输入,并在以后的代码行中打印

问题:如果可能,如何将扫描仪输入分配给“团队”并在If语句中引用以进行比较?我应该如何分配这些值

这是给我的代码

public class Team implements Comparable<Team> {

public String toString(String team, int wins) {
    String winningStatement = team + ": " + wins;
    return winningStatement;
}

// Data fields
private String name;
private int winCount;

Team() {
    name = "Sooners";
    winCount = 1;
}

Team(String inputName) {
    name = inputName;
    winCount = 1;
}

Team(String inputName, int inputWinCount) {
    name = inputName;
    winCount = inputWinCount;
}
公共类团队实现了可比较的{
公共字符串toString(字符串组,整数获胜){
字符串winningStatement=团队+“:”+获胜;
返回winningStatement;
}
//数据字段
私有字符串名称;
私人温克蒙特;
小组(){
name=“Sooners”;
winCount=1;
}
团队(字符串输入名称){
名称=输入名称;
winCount=1;
}
团队(字符串inputName,int inputWinCount){
名称=输入名称;
winCount=输入winCount;
}
下面是我使用ArrayList的尝试

        Scanner scnr = new Scanner(System.in);
        Random rando = new Random();
        String name = "hi";
        int cycles = 0;
        int value = 0;
        ArrayList<Team> teams = new ArrayList<Team>();
        Team myTeam = new Team();
        System.out.println("Welcome to the Advanced Sportsball Tracker!");

        while (!name.equals("x")) // looping print statement
        { // x loop begins
            System.out.println("Which team just won? (x to exit)");
            name = scnr.next();
                if (!teams.equals(name))
                    {
                    teams.add(thisTeam);
                    myTeam.setWinCount(1);
                    }
                else if (teams.equals(name))
                {
                    myTeam.incrementWinCount();
                }
            cycles++;
        }// x loop ends
Scanner scnr=新扫描仪(System.in);
随机随机数=新随机数();
String name=“hi”;
整数周期=0;
int值=0;
ArrayList团队=新建ArrayList();
团队myTeam=新团队();
System.out.println(“欢迎使用高级运动球跟踪器!”);
while(!name.equals(“x”)//循环打印语句
{//x循环开始
System.out.println(“哪支球队刚刚获胜?(x退出)”;
name=scnr.next();
如果(!teams.equals(name))
{
添加(thisTeam);
myTeam.setWinCount(1);
}
else if(团队相等(名称))
{
myTeam.incrementWinCount();
}
循环++;
}//x循环结束

感谢您的帮助

仅从您示例的意图来判断……这似乎就是您试图实现的目标。尽管如此,您关于ArrayList对象与重载构造函数的关系的问题并没有真正意义

public class Team  {
    // Data fields
    private String name;
    private int winCount;

    public Team() {
        name = "Sooners";
        winCount = 1;
    }

    public Team(String inputName) {
        name = inputName;
        winCount = 1;
    }

    Team(String inputName, int inputWinCount) {
        name = inputName;
        winCount = inputWinCount;
    }

    public String toString(String team, int wins) {
        return team + ": " + wins;
    }

    public String getName() {
        return name;
    }

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

    public int getWinCount() {
        return winCount;
    }

    public void setWinCount(int winCount) {
        this.winCount = winCount;
    }

    void incrementWinCount() {
        winCount++;
    }
}

void runSystem() {
    List<Team> teams = new ArrayList<>();
    Scanner scnr = new Scanner(System.in);
    int cycles = 0;

    System.out.println("Welcome to the Advanced Sportsball Tracker!");

    System.out.println("Which team just won? (x to exit)");
    String name = scnr.next();

    while (!"x".equals(name)) {
        final String teamName = name;
        Team team = teams.stream().filter(t -> teamName.equals(t.getName())).findAny().orElse(null);

        if (team == null) {
            team = new Team(teamName, 1);
            teams.add(team);
        }
        else {
            team.incrementWinCount();
        }

        cycles++;
        System.out.println("Which team just won? (x to exit)");
        name = scnr.next();
    }
}
公共类团队{
//数据字段
私有字符串名称;
私人温克蒙特;
公共团队(){
name=“Sooners”;
winCount=1;
}
公共团队(字符串输入名称){
名称=输入名称;
winCount=1;
}
团队(字符串inputName,int inputWinCount){
名称=输入名称;
winCount=输入winCount;
}
公共字符串toString(字符串组,整数获胜){
返回队+“:”+获胜;
}
公共字符串getName(){
返回名称;
}
公共void集合名(字符串名){
this.name=名称;
}
public int getWinCount(){
返回winCount;
}
公共无效设置winCount(内部winCount){
this.winCount=winCount;
}
无效增量WinCount(){
winCount++;
}
}
void runSystem(){
列表团队=新建ArrayList();
扫描仪scnr=新扫描仪(System.in);
整数周期=0;
System.out.println(“欢迎使用高级运动球跟踪器!”);
System.out.println(“哪支球队刚刚获胜?(x退出)”;
String name=scnr.next();
而(!“x”。等于(名称)){
最终字符串teamName=name;
Team Team=teams.stream().filter(t->teamName.equals(t.getName()).findAny().orElse(null);
如果(团队==null){
团队=新团队(团队名称,1);
团队。添加(团队);
}
否则{
team.incrementWinCount();
}
循环++;
System.out.println(“哪支球队刚刚获胜?(x退出)”;
name=scnr.next();
}
}

为什么“重载构造函数”对“数组列表”很重要?ArrayList不调用构造函数。在诊断问题和寻求帮助时,删除不必要的/不相关的信息。对不起,不知道你在问什么。我在这里没有看到任何关于循环的
,我不明白你认为什么是错的。我能看到的唯一一件事是你的
if
条件似乎在比较一个列表o一个永远不会有好结果的字符串。然后,我对构造函数的性质更为困惑。我是否得到了一个具有特定格式(int x,string y)的对象或类类型“Team”,或者我可以将具有任何基元值(int 10)的对象分配给“Team”对象?很抱歉,我今天学到了这两个概念,我把它们弄糊涂了。是的,因为你不知道术语,所以你的问题没有太多意义。我建议你找一本书或一本教程来研究它。如果你有一个特定的问题,你可以回到堆栈溢出因为你知道正确的词语来连贯地提出你的问题。很抱歉这么严厉,但是如果你不能真正理解你想问什么,那么很难帮助你。