2016-10-27 17 views
0

このプログラムは、ユーザーの選択した日付とユーザーの選択した生年月日を取得し、それらの年齢を計算するために作成されます。これまでのところ私は値を入力して名前を取得するようになっています。 AgeCalculatorクラスの値を返す場合は、mainで印刷されたときにデフォルト値(2000/01/01)を返すので、何もしていないようです。入力後に値を正しく表示するにはどうすればよいですか?どのように値が正しく表示されないのですか?

OurDateクラス//は

import java.util.Scanner; 

public class OurDate { 

private int year; 
private int month; 
private int day; 
private Scanner scan = new Scanner(System.in); 

public OurDate() { 

    year = 2000; 
    month = 1; 
    day = 1; 

} 

public void setYearFromUser() { 

    System.out.print("Enter a valid year: "); 
    year = scan.nextInt(); 

} 

public void setMonthFromUser() { 
    System.out.print("Enter the month: "); 
    month = scan.nextInt(); 

} 

public void setDayFromUser() { 
    System.out.print("Enter the day: "); 
    day = scan.nextInt(); 
    System.out.println(""); 

} 

public void displayDate() { 

    System.out.println(month + "/" + day + "/" + year); 

} 

public int calcDays() { 

    return (year*360*month*30 + day); 


} 
} 

AgeCalculatorクラス//が

import java.util.Scanner; 

public class AgeCalculator { 

private OurDate todayDate; 
private OurDate birthDate; 
private String personName; 
private String message; 

public AgeCalculator() { 

    todayDate = new OurDate(); 
    birthDate = new OurDate(); 

} 

public void enterData() { 

    System.out.println("Enter today's date: "); 
    todayDate.setYearFromUser(); 
    todayDate.setMonthFromUser(); 
    todayDate.setDayFromUser(); 

    System.out.println("Enter birth date: "); 

    birthDate.setYearFromUser(); 
    birthDate.setMonthFromUser(); 
    birthDate.setDayFromUser(); 

    System.out.println("Enter person's name:"); 
    Scanner scan = new Scanner (System.in); 
    personName = scan.nextLine(); 

} 

public void calculateMessage() { 



} 

public void displayResults() { 

    System.out.print("Today date: "); 
    todayDate.displayDate(); 

    System.out.print("Birth date: "); 
    birthDate.displayDate(); 

    System.out.print(personName); 

} 
} 

以下のメインファイル(ASSIGN2)するためのメソッドを作成します。下のAgeCalculatorクラスためのすべての変数やメソッドを宣言しますAssing2クラス//メインファイル

public class Assign2{ 

public static void main(String[] args) { 

    AgeCalculator inputFromUser = new AgeCalculator(); 
      inputFromUser.enterData(); 

    AgeCalculator displayMessage = new AgeCalculator(); 
      displayMessage.displayResults(); 

} 


} 

答えて

0

主な機能は2つの異なるオブジェクトを作成します。 JavaおよびOOPプログラミング言語では、各オブジェクトには独自のデータセットがあります。

したがってinputFromUserオブジェクトは、enterData()を呼び出したときに、ユーザーからの正しい入力を取得しています。

およびdisplayMessageはありません。

あなたは

AgeCalculator calc = new AgeCalculator(); 
calc.enterData(); 
calc.displayResults(); 
+0

ありがとうございます!完璧に働いて、その背後にある推論を理解しています。 :) – obonmarc

0

inputFromUserdisplayMessage 2つの別々のオブジェクトであり、それらそれぞれが独自のデータを持っている同じオブジェクトを使用する必要があります。 inputFromUserが保持するデータを表示する場合は、inputFromUser.displayResults()に電話する必要があります。

+0

ありがとう!私は@ Shady Atefのコードを取ったが、あなたのことはまったく意味をなさない。どうもありがとうございます。 :) – obonmarc

0

mainメソッドでdisplaydateメソッドを呼び出します。

関連する問題