Array Loop печатает ссылку вместо строки

Мне предоставили объект и несколько методов для работы с ним. Мне сложно распечатать строку, которую я присваиваю переменным. На данный момент я не уверен, присваиваю ли я новые значения вообще, и я не могу их распечатать. Предыдущие итерации содержали только печатные ссылки.

Вопрос: присваиваю ли я новые строковые значения? Как напечатать строку с помощью указанных методов?

Вот код, который мне предоставили

public class Team implements Comparable<Team> {

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

// 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;
}

// ----------------------------------------------------
// Getters and Setters 
/**
 * @return the name
 */
public String getName() {
    return name;
}

/**
 * @param name
 *            the name to set
 */
public void setName(String name) {
    this.name = name;
}

/**
 * @return the winCount
 */
public int getWinCount() {
    return winCount;
}

/**
 * @param winCount
 *            the winCount to set
 */
public void setWinCount(int winCount) {
    this.winCount = winCount;
}

/**
 * Increments the winCount variable by one for this Team
 */
public void incrementWinCount() {
    winCount++;
}

/**
 * This method allows you to check to see if this Team object has the same
 * name as another Team object.
 * 
 * This method allows you to use the contains method in ArrayList to see
 * if any element in an array list has the same name as a specific Team.
 * 
 * @param o
 *            the other Team being compared to.
 */
@Override
public boolean equals(Object o) {
    return name.equals(((Team) o).name);
}

/**
 * This method allows you to check to see if this Team object has the same
 * name as another Team object
 * 
 * @param otherTeam
 *            one team
 */
public boolean sameName(Team otherTeam) {
    return name.equals(otherTeam.name);
}
/**
 * This method allows you to check to see if this Team object has the same
 * name as another Team object
 * 
 * @param team1
 *            one team
 * @param team2
 *            the other team
 */
public static boolean sameName(Team team1, Team team2) {
    return team1.name.equals(team2.name);
}

/**
 * This method allows you to sort an ArrayList of Team items using
 * Collections.sort
 * 
 * @param o
 *            the other Team being compared to.
 * @return -1 if this Team item should come first, +1 if this Team item
 *         should come after the other, and 0 if this Team item is
 *         equivalent to the other.
 */
@Override
public int compareTo(Team o) {
    if (this.winCount < o.winCount) {
        return -1;
    } else if (this.winCount > o.winCount) {
        return 1;
    }
    return 0;
}

}

Вот мой текущий код

   Scanner scnr = new Scanner(System.in);  
        Random rando = new Random();
        String name = "no";
        int cycles = 0;
        int value = 0;
        int match = 0;
        ArrayList<Team> teams = new ArrayList<Team>();
        Team newTeam = new Team(name,1);
        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)");
            match = 0;
            cycles++;
            name = scnr.next();
            for (Team list : teams)
            {
                if (list.getName().equals(name)) // compares the name of the team to the input value
                    {
                        match++;
                    }
            }
            if (match == 0)
            {
                teams.add(newTeam);
            }

        }// x loop ends
        System.out.print(newTeam.getName());
        if (cycles == 1) // prints no data if user immediately exits
        {
            System.out.println("No data input");
        }
        if (cycles > 1) 
        {
        System.out.println("Final Tally: "); //  loop to print final Talley
        for (Team list : teams) // FIXME
        {
            list.toString(list.getName(),list.getWinCount());  // makes a string out of the string and wincount of the team
        }

Сначала вы исправляете метод public String toString(), который вы дали команде. Он должен соответствовать сигнатуре метода объекта toString () - это означает, что он не должен иметь никаких параметров, и это имеет смысл, поскольку параметры вашего текущего метода совершенно ненужны и вредны.

Hovercraft Full Of Eels 21.07.2018 04:52

о каком экземпляре вы имеете в виду? Тот, который находится внутри оператора if цикла или внутри методов, которые мне были предоставлены?

George Michael 21.07.2018 04:56

Какой экземпляр? метод внутри класса Team с комментарием «это метод, который вы исправите». Почини это.

Hovercraft Full Of Eels 21.07.2018 05:01

Я уже исправил оператор, который забыл исключить из экземпляра. Извините за путаницу. Изначально оператор вернул только "" и получил аргумент String.

George Michael 21.07.2018 05:03
Очередной раз допустимый метод toString() должен получить аргумент нет. Никто. Пожалуйста, прочтите Как правильно переопределить toString () в Java?
Hovercraft Full Of Eels 21.07.2018 05:11
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
5
40
1

Ответы 1

Какой был исходный код для метода toString, который они вам дали? Вы добавили параметры? Лучший способ сделать это - позволить объекту использовать поля данных внутри метода. Передача переменных-членов в вашем цикле for не требуется, и это просто плохой код. Вместо этого вы хотите сделать что-то вроде этого:

public String toString() {
    return name + ": " + wins;
}

И в вашем цикле, если вы хотите распечатать результаты, просто сделайте это:

System.out.print(list.toString());

Другие вопросы по теме