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*/

Defining Classes

package exercise1;
public class newyearmain
{
public static void main(String[] args)
{
newyear date1= new newyear();
//挪出記憶體存放 date1
System.out.println("The new year is: ");
date1.makeItNewYears();
date1.writeOutput();

}

}
-----------------------------------------------
package exercise1;
//剛剛少package,所以一直有errors
public class newyear
{
public int month;
public int day;
public int year;
//method1:write output
public void writeOutput()
{
System.out.println(year+"/"+month+"/"+day);
}
//method2:make it new year
public void makeItNewYears()
{
month=1;
day=1;
year=2007;
}
}

Mean&Variance

package meanvariance;
import javax.swing.JOptionPane;
public class MeanVariance
{
public static void main (String[] args)
{
int i=0,n,sum1=0,sum2=0;
//設定在迴圈外面,否則出了迴圈定義就不見了
double e=0;
String number=JOptionPane.showInputDialog("Please enter a number.");
n= Integer.parseInt(number);
while(n>=0)
{
sum1+=n;
e=n*n;
sum2+=e;
i++;
n=0;
number=JOptionPane.showInputDialog("Please enter a number.");
n= Integer.parseInt(number);
}
if (sum1<0)
System.out.println("Mean =0\nVariance=0\n");
else
{
double mean=sum1/i;
double variance=sum2-mean*mean;
System.out.println("Mean="+mean+"\nVariance="+variance+"\n");
}
System.exit(0);
}
}