2015-07-19 2 views
-1

Всякий раз, когда я запускаю свою программу, ничего не появляется. В окне консоли все видимое пустое, пустое.Java: Консоль не показывает никакого вывода

Скриншот: enter image description here

Вот паста моего кода:

import java.util.Scanner; 

public class Foothill 
{ 
    public static void main(String[] args) 
    { 
     // declare the references 
     //warning for line below 
     HeartRates heartrates; 
     //warning for line above: the value of the local variable heartrates is not used 

     // instantiate the object 
     heartrates = new HeartRates(); 
    } 
} 

class HeartRates { 

    // member data 
    public String firstName, lastName; 
    public int birthMonth, birthDay, birthYear, personAge, maxRate, minRange, maxRange; 

    // default constructor 
    HeartRates() { 
    } 

    // 2-parameter constructor 
    HeartRates (String userFirstname, String userLastname, int userBirthmonth, int userBirthday, int userBirthYear, int userAge, int heartMax, int userMin, int userMax){ 
     firstName = userFirstname; 
     lastName = userLastname; 
     birthMonth = userBirthmonth; 
     birthDay = userBirthday; 
     birthYear = userBirthYear; 
     personAge = userAge; 
     maxRate = heartMax; 
     minRange = userMin; 
     maxRange = userMax; 
    } 

    // accessor "get" methods -------------------------------- 
    public String getFirstname(String userFirstname, String firstName) { 
     firstName = userFirstname; 
     Scanner inputStream = new Scanner (System.in); 
     userFirstname = inputStream.nextLine(); 
     System.out.print("Your first name is: " + userFirstname); 
     inputStream.close(); 
     return firstName; 
    } 
    public String getLastName(String userLastname, String lastName){ 
     lastName = userLastname; 
     Scanner inputStream = new Scanner (System.in); 
     userLastname = inputStream.nextLine(); 
     System.out.print("Your last name is: " +userLastname); 
     inputStream.close(); 
     return lastName; 
    } 
    public int getBirthmonth(int userBirthmonth, int birthMonth){ 
     birthMonth = userBirthmonth; 
     Scanner inputStream = new Scanner (System.in); 
     userBirthmonth = inputStream.nextInt(); 
     int monthBirth = Integer.parseInt("userBirthmonth"); 
     System.out.print(monthBirth); 
     inputStream.close(); 
     return birthMonth; 
    } 
    public int getBirthday(int userBirthday, int birthDay){ 
     birthDay = userBirthday; 
     Scanner inputStream = new Scanner (System.in); 
     userBirthday = inputStream.nextInt(); 
     int dayBirth = Integer.parseInt("userBirthday"); 
     System.out.print(dayBirth); 
     inputStream.close(); 
     return birthDay; 
    } 
    public int getBirthyear(int userBirthyear, int birthYear){ 
     birthYear = userBirthyear; 
     Scanner inputStream = new Scanner (System.in); 
     userBirthyear = inputStream.nextInt(); 
     int yearBirth = Integer.parseInt("userBirthyear"); 
     System.out.print(yearBirth); 
     inputStream.close(); 
     return birthYear; 
    } 
    public int getAge(int birthMonth, int birthDay, int birthYear, int userAge){ 
     personAge = userAge; 
     Scanner inputStream = new Scanner (System.in); 
     System.out.print("Please enter the current month in numbers: "); 
     int theMonth = inputStream.nextInt(); 
     System.out.print("Please enter the current day in numbers: "); 
     int theDay = inputStream.nextInt(); 
     System.out.print("Please enter the current year in numbers: "); 
     int theYear = inputStream.nextInt(); 
     userAge = theYear - birthYear; 
     if ((theMonth == birthMonth && theDay < birthDay) || theMonth < birthMonth){ 
      userAge--; 
      System.out.println("Your date of birth is: " + birthMonth + "/" + birthDay + "/" + birthYear); 
      System.out.println("You are " + userAge + " years old."); 
     } 
     else { 
      System.out.println("Your are " + userAge + " years old."); 
     } 
     inputStream.close(); 
     return userAge; 
    } 
    public int getMaximumHeartRate(int heartMax, int userAge, int maxRate){ 
     maxRate = heartMax; 
     heartMax = 220 - userAge; 
     return maxRate; 
    } 
    public double getMinTargetHeartRate(int heartMax, int userMin, int minRange){ 
     minRange = userMin; 
     userMin = (int)(heartMax*0.5); 
     return minRange; 
    } 
    public int getMaxTargetHeartRate(int heartMax, int userMax, int maxRange){ 
     maxRange = userMax; 
     userMax = (int)(heartMax*0.85); 
     return maxRange; 
    } 
    public void getTargetHeartRange(int heartMax, int userMin, int userMax){ 
     System.out.println("Your maximum heart rate is " + heartMax + "beats per minute."); 
     System.out.print("Your target-heart-rate range is from " + userMin + " to " + userMax + " beats per minute."); 
    } 

    // accessor "set" method ------------------------------- 
    public void setFirstname(String userFirstname, String firstName){ 
     firstName = userFirstname; 
    } 
    public void setLastname(String userLastname, String lastName){ 
     lastName = userLastname; 
    } 
    public void setBirthmonth(int userBirthmonth, int birthMonth){ 
     birthMonth = userBirthmonth; 
    } 
    public void setBirthday(int userBirthday, int birthDay){ 
     birthDay = userBirthday; 
    } 
    public void setBirthyear(int userBirthyear, int birthYear){ 
     birthYear = userBirthyear; 
    } 
    public void setAge(int userAge, int personAge){ 
     personAge = userAge; 
    } 
    public void setMaximumHeartRate(int heartMax, int maxRate){ 
     maxRate = heartMax; 
    } 
    public void setMinTargetHeartRate(int userMin, int minRange){ 
     minRange = userMin; 
    } 
    public void setMaxTargetHeartRate(int userMax, int maxRange){ 
     maxRange = userMax; 
    } 

} 

Я новичок в Java, и из моего кода, который вы, вероятно, может сказать, что я изо всех сил пытаюсь объять концепция создания классов, методов и объектов-экземпляров. Фактически, мы должны распечатать всю информацию с объекта, но я не совсем понимаю, что это значит. Большинство из того, что у меня есть, основано на примерах в Интернете или в моей книге. Я знаю, что были схожие вопросы, но я думаю, что мой немного отличается. Огромное спасибо.

+6

Вы создаете пустой объект HeartRates в основном, но ничего не делаете с ним, например методы вызова на нем - что вы ожидаете увидеть в консоли и почему? Чтобы лучше понять, что происходит, пройдите через свой код мысленно, чтобы посмотреть, что он делает на каждом шагу. Помните, что будет запущен только код, вызываемый в основном методе. –

ответ

1

Функции, которые печатают что-то на консоли в вашем коде, это public int getAge(...) или getTargetHeartRange(..), которые никогда не вызываются. Вы только вызывали конструктор no-argument на свой объект, а затем ничего не делали. Вы должны называть функции, если хотите, чтобы они работали.

Что-то вроде:

heartrates.getTargetHeartRange(fill in your arguments); 

В вашем случае, если вы хотите напечатать что-то значимое, я полагаю, вы на самом деле установить некоторые значения этих переменных-членов (т.е. использовать свои функции инкубационных после создания объекта).

0

Я думаю, что непосредственной причиной ваших проблем является то, что ваша программа, похоже, ничего не делает, кроме создания экземпляра HeartRate. Вы получите только выход, если один из методов с вызовом System.out.println(...) фактически вызывается вашим кодом.

Если вы просто хотите, чтобы увидеть некоторые результаты, просто изменить:

heartrates = new HeartRates(); 

в

System.out.println("Offering low rates on second hand hearts!"); 
    heartrates = new HeartRates(); 

Вторая проблема заключается в том, что ваш код создает новый Scanner(System.in) объект каждый раз, когда вы хотите читать. Это плохая идея, и это может вызвать проблемы. В зависимости от методов, которые вы вызываете (и характера входного потока), вы можете завершить «чтение вперед». Если это произойдет, символы, которые были прочитаны, будут недоступны для чтения с System.in.

Что нужно сделать, это создать объект Scanner(System.in) только один раз и поместить его в личное поле.

(Еще лучше с точки зрения дизайна, реорганизуйте свой код так, чтобы объект HeartRate не отвечал за чтение/разбор входных данных пользователя. Однако это, вероятно, «урок», который вы еще не готовы.)

Смежные вопросы