2015-08-24 3 views
1

Кто-нибудь знает, почему я не получаю действительные целые числа для вывода ... Я получаю WorkOut @ 1261281792. Я знаю, что это что-то маленькое, но не могу понять. вот мои 3 класса:Почему нет вывода Integer

public class WorkOut1 { 

    public static void main(String [] args) {  

     Exercise tuesWorkout = new Exercise (10, 50); 

     PullUps tuesPullUps = new PullUps (10, 50); 

     System.out.println("This Tuesday our workout will consist of this many minutes and reps:"); 
     System.out.println(tuesWorkout); 
    } 
} 

подтягивания Класс

public class PullUps extends Exercise { 

    private static int barHeight; 

    public PullUps (int min, int reps) { 
     super(min, reps); 
     barHeight = 6; 
    } 
} 

Упражнение класс

public class Exercise { 

    private static int min; 
    private static int reps; 

    //Constructor 
    public Exercise(int min,int reps) { 
     this.min = min; 
     this.reps = reps; 
    }// end constructor 

    public static int howManyMin() { 
     return min; 
    }//end method howmanyMin() 

    public static int howManyReps() { 
     return reps; 
    }//end method howmanyReps() 

}//end class 
+0

Это то, что вы должны получить. Вы запрашиваете «распечатать» фактический экземпляр класса Workout1. Это то, что вы получаете. – Marcin

+0

Если вы хотите распечатать, например, повторы, вы хотите сделать что-то в строках 'System.out.println (tuesWorkout.howManyReps())'. – Marcin

ответ

4

Когда вы вызываете объект для печати, вызывается метод toString() объекта, который в этом случае будет наследоваться от класса Object (это класс Java, из которого все наследуются классы) t определил метод toString() в классе Exercise. Таким образом, вы получаете имя объекта + хэш-представление объекта. Одним из исправлений будет создание метода toString в подлежащем печати объекте (в данном случае упражнении), который возвращает строку того, что вы хотите напечатать.

public String toString() { 
    return(min + ", " + reps); 
} 

Другой вариант - напечатать результат функции доступа для свойства, которое вы хотите напечатать в своем основном классе.

System.out.println(tuesWorkout.howManyMin() + ", " + tuesWorkout.howManyReps()); 
+0

Спасибо Адриану ... это отличная помощь. – Brad

2

Вы не хотите печатать фактический tuesWorkout сам объект.

Вы хотите сделать:

System.out.println(tuesWorkout.howManyReps());

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

Затем вы должны позвонить своему getter по телефону min, чтобы узнать, сколько min тренировки есть.

Просто позвонив System.out.println(tuesWorkout), это похоже на печать самого объекта, который не имеет для нас реального смысла.

+2

Кроме того, если целью является возможность печати пользовательского формата для ваших классов, вы можете захотеть взглянуть на переопределение своего метода public String toString(). – whitlaaa

+0

Ahh да. Еще лучшая идея. – Marcin