2016-11-22 4 views
-3

Почему print toString() не печатает объекты класса Array Class? В нем говорится, что «не может вернуть результат недействительности». Какой тип результата он хочет, если мои личные объекты ArrayList содержат значения.print toString() не печатает объекты класса класса ArrayList

Например: В Person классового

public class Person { 

    private ArrayList <String> name; 

    private ArrayList <Integer> number; 

    public Person(ArrayList <String> thatName, ArrayList <Integer> thatNumber) 
    { 
     name = new ArrayList <String>(thatName); 
     number = new ArrayList <Integer>(thatNumber); 
    } 

    public ArrayList<String> getName() 
    { 
     return name; 
    } 

    public ArrayList<Integer> getNumber() 
    { 
     return number; 
    } 

    public String toString() 
    { 
     return System.out.println(name + "" + number); //Gives error "cannot return a void result"  
    } 

Кроме того, я могу сделать String.format(,) работу в этом случае? Я попытался, но он не работает, поскольку типы объектов ArrayList не являются примитивными типами данных.

EDIT:

Вот как я называю Person класс, но toString() ничего не печатает.

import java.util.ArrayList; 
public class PersonTest { 

public static void main(String[] args) { 

    ArrayList <String> nam = new ArrayList <String>(); 
    ArrayList <Integer> numb = new ArrayList <Integer>(); 

    nam.add("Zeus"); 
    numb.add(99); 

    Person pr = new Person(nam, numb); 

    pr.toString(); 

} 

} 
+0

Те, кто голосуют, прошу оставить и причину, если вы человек. – Zeus

+0

Прочтите документацию. Изучите API Java. Понимайте самоочевидное сообщение об ошибке ... * Вопрос не показывает исследовательское усилие * находится в тексте наведения стрелки вниз. –

+2

Ну, во-первых, это даже не компилируется ... так что название ** print toString() не печатает объекты члена класса ArrayList ** неверно. – AxelH

ответ

1

System.out.println - это пустота, поэтому ничего не может вернуть. Что вы должны сделать, это:

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

и в вызывающем, использование человеком экземпляра для печати:

System.out.println(person.toString()); 

или ниже, так как печать объекта автоматически вызывается метод ToString().

System.out.println(person); 
+0

Спасибо, но он не работает. Я отправил свой метод вызова и его класс. Помогите – Zeus

+1

после внесения изменений в метод toString(), для вызывающего класса просто введите System.out.println (pr.toString()) – Rudy

+1

@Zeus Вы также можете просто 'System.out.println (человек) ' –

2

Вы хотите вернуть строку, println является void метод.

Несколько вдоль линий этого Python вопрос - How is returning the output of a function different than printing it?

Изменение

return System.out.println(name + "" + number) 

в return name + "" + number;

Кроме того, я могу сделать string.Format (,) работа в этом случае ?

Несомненно. return String.format("Names: %s\nNumbers: %s", name, number);

+0

Спасибо, но он не работает. Я отправил свой метод вызова и его класс. Пожалуйста помоги. – Zeus

+2

@Zeus, 'pr.toString()' ничего не сделает, ожидая получить значение String. Вам нужно напечатать значение с помощью 'System.out.print (String)'. И это не может быть сделано в методе 'toString()' (но не на методе возврата), потому что для этого нужно вернуть String. Прочтите полный ответ! – AxelH