2005-11-21

Homework Lab 11-21 (2) Class Definition

package project4_2;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class class1
{
public String month;
public int day;
public int year;

public void readInput()throws IOException
{
System.out.println("Please enter month.(Ex:Jan, Feb...)");
BufferedReader keyinMonth = new BufferedReader(new InputStreamReader(System.in));
month = keyinMonth.readLine();
System.out.println("Please enter day.");
BufferedReader keyinDay = new BufferedReader(new InputStreamReader(System.in));
day = Integer.parseInt(keyinDay.readLine());
System.out.println("Please enter year.");
BufferedReader keyinYear = new BufferedReader(new InputStreamReader(System.in));
year = Integer.parseInt(keyinYear.readLine());
}

public void setDate()
{
month="Jun";
day=17;
year=2005;
}

public int getDay()
{
return day;
}
public int getYear()
{
return year;
}
public int getMonth()
{
if(month.equalsIgnoreCase("Jan"))
return 1;
else if(month.equalsIgnoreCase("Feb"))
return 2;
else if(month.equalsIgnoreCase("Mar"))
return 3;
else if(month.equalsIgnoreCase("Apr"))
return 4;
else if(month.equalsIgnoreCase("May"))
return 5;
else if(month.equalsIgnoreCase("Jun"))
return 6;
else if(month.equalsIgnoreCase("Jul"))
return 7;
else if(month.equalsIgnoreCase("Aug"))
return 8;
else if(month.equalsIgnoreCase("Sep"))
return 9;
else if(month.equalsIgnoreCase("Oct"))
return 10;
else if(month.equalsIgnoreCase("Nov"))
return 11;
else if(month.equalsIgnoreCase("Dec"))
return 12;
else
{
System.out.println("Fatal Error");
System.exit(0);
return 0;
}
}
}
--------------------------------------------------
package project4_2;
import java.io.IOException;
public class class2
{
public static void main(String[] args)throws IOException
{
class1 date = new class1();
date.setDate();
int numDay= date.getDay();
int numMonth=date.getMonth();
int numYear=date.getYear();
System.out.println("The date is "+numMonth+" "+numDay+", "+numYear+".");
/*因為setDate對變數day,month,year皆有新的內容輸入
所以必須經過getDay/getMonth/getYear回傳值給numDay/numMonth/numYear才會有相對應的值輸出*/
date.readInput();
numDay= date.getDay();
numMonth=date.getMonth();
numYear=date.getYear();
System.out.println("The date is "+numMonth+" "+numDay+", "+numYear+".");
/*相同的,如果沒有重新設定所input的新變數
亦即,重新回傳值給numDay/numMonth/numYear
則上列三數則會延用setDate的資料,無法print出後來輸入的資料*/
System.out.println(date.month);
}
}

month為字串型態,唯經過getMonth回傳給numMonth(整數變數)的值是數字
month內的字串型態仍不改變
故輸出為所輸入的Mar

若沒有打上上述紅色三行程式碼

則輸出為
The date is 6 17, 2005.
Please enter month.(Ex:Jan, Feb...)
Mar
Please enter day.
31
Please enter year.
1985
The date is 6 17, 2005.
/*因為沒有重新設定num
Day/numMonth/numYear
所以
延用了setDate的資料(6 17, 2005)*/
Mar
/*但是所input的新月份有傳輸到字串變數month裡面
所以輸出值為已變更的Mar*/

0 Comments:

張貼留言

<< Home