Java 課下練習題 T1

蘇凱祺發表於2017-08-22
1)設計顯示各種水果的定購詳情的類,詳情包括:名稱、數量、價格
測試資料:"蘋果", 10, 20 ; "芒果", 18, 56 ;  "桔子", 25, 75
2)設計一個類用於得出三個不同盒子的體積。
測試資料:2, 3, 4 ;1, 5, 6 ;3, 8, 2


3)設計一個Tools類提供過載方法println()和println(String info),讓其接收不同的資料並能列印字串,數字,布林值和換行列印。
4)設計用於將華氏溫度轉換為攝氏溫度的類.
提示:
華氏溫度轉換為攝氏溫度.公式  攝氏=(華氏-32)*5/9
攝氏溫度轉換為華氏溫度.公式  華氏=攝氏*9/5+32
5)設計一個測試類,僅有一個main方法,然後在main中設定一個華氏溫度,然後呼叫上題定義的方法轉換成攝氏溫度,最後使用6中的Tools類的print完成列印輸出
6).寫一個名叫Person的類表示人類,資料域為姓名name、性別gender、年齡age,name是String型別、gender是boolean型別(true表示男性,false表示女性)、age是int型別;人的行為有行走walk、吃eat。要求如下:
a) 實現walk和eat方法,分別列印“XXX在行走”,“XXX在吃東西”;XXX是具體人名
b) 提供main方法,創造兩個人類的例項:Lucy,女,23歲;Jame,男,25歲
c) 在main方法中分別呼叫兩個人類例項的walk和eat方法,觀察列印結果


7).程式碼閱讀:給定如下Java程式碼,編譯執行後,輸出結果是什麼?並解釋原因。
class Base {    
  public Base() {    
       System.out.println("Base");    
  }    
}    
class Child extends Base{    
   public Child() {    
       System.out.println("Child");    
   }    
public class Sample {    
   public static void main(String[] args) {    
      Child c = new Child();    
   }    
}


//7.自動繼承了父類的屬性和方法,所以會先呼叫父類的建構函式輸出


8). 程式碼改錯:請指出如下Java程式碼中存在的錯誤,並解釋原因。
class Base {    
   public void method() {    
   }    
}    
class Child extends Base{    
   public int method() {    
   }    
   private void method() {    
   }    
   public void method(String s) {    
   }    
}


//int method()是一個需要返回值的函式    ,而且在父類中已經有一個同名函式了
 //void method()是因為在父類中已經有一個一樣的函式了
//子類不能過載父類的方法,只能重寫或覆蓋、子類中父類的同名方法也不可以私有。  




9). 程式碼改錯:請指出如下Java程式碼中存在的錯誤,並改正
public class Sample {    
   public static void main(String[] args) {    
       Child c = new Child();    
   }    
}    
class Base extends Object{    
   private String name;    
   public Base() {    
       name = "Base";    
   }    
}    
class Child extends Base{    
    public Child() {    
       super("Child");    
    }    
}


//呼叫了父類中的建構函式,可是父類中的是無引數建構函式,這裡使用了引數,所以報錯,可以將引數刪除或者將父類的建構函式中新增上引數


10). 程式碼改錯:請指出如下Java程式碼中存在的錯誤,並改正。
class Teacher {    
  public void giveLesson() {    
      System.out.println("知識點講解");    
      System.out.println("總結提問");    
  }    
}    
class DBTeacher extends Teacher {    
  public void giveLesson() {    
      System.out.println("啟動 SqlServer");    
      super.giveLesson();    
  }    
  public void sayHi() {    
      System.out.printl ("Hi");    
  }    
}    
public class Test {    
  public static void main(String[] args) {    
      Teacher t = new DBrreacher ();    
      t.sayHi();    
      t.giveLesson();    
}


//物件的建立有問題,首先是建立物件的類不一致,同時類物件的使用需要是DBTeacher,因為只有這個類才有sayHi()函式,故修改物件的建立即可,DBTeacher t = new DBTeacher();


11).在員工管理系統中,有普通員工,經理,董事三種角色,公司所有的員工都有員工Id,員工名字,員工基本薪水(2000),請假天數;現初步定Employee類為父類,Manager子類、Director(董事)子類,它們的區別是計算工資方式不一樣。
具體工資計算辦法:
A、工資扣除部分:如果請假小於5天,基本工資發75%,大於5天,基本工資發50%  ;
B、經理的工資=基本工資+住房補貼(基本工資的0.2)+交通補貼(基本工資的0.5)+醫療補貼(500) ;
C、董事的工資=基本工資+住房補貼(基本工資的0.08)+交通補貼(基本工資的0.3)+醫療補貼(2000)+娛樂補貼(3000) ;

現完成此係統的設計。

public class Test_round {
	public static void main(String arg[]){
		//1
//		Fruit fruit1=new Fruit();
//		fruit1.name="蘋果";
//		fruit1.number=10;
//		fruit1.price=20;
//		fruit1.text();
		//2
//		Box boxV=new Box(2,3,4);
//		System.out.print(boxV.text());
		//3
//		Tools tools=new Tools();
//		tools.println("women");
//		tools.println();
//		tools.println(123);
//		tools.println(0);
		//4
//		Temperature temperature=new Temperature(32);
//		System.out.print(temperature.text());
		//5
//		double Htemp=33;
//		Temperature temperature=new Temperature(Htemp);
//		Tools tools=new Tools();
//		tools.println(temperature.text());
		
		//6:Lucy,女,23歲;Jame,男,25歲
//		Person man=new Person("Jame",true,25);
//		man.walk();man.eat();
//		Person woman=new Person("Lucy",false,23);
//		woman.walk();woman.eat();
		

		//7.自動繼承了父類的屬性和方法,所以會先呼叫父類的建構函式輸出

		
		//8.int method()是一個需要返回值的函式    ,而且在父類中已經有一個同名函式了
		 //void method()是因為在父類中已經有一個一樣的函式了
		//子類不能過載父類的方法,只能重寫或覆蓋、子類中父類的同名方法也不可以私有。  
		
		//9.呼叫了父類中的建構函式,可是父類中的是無引數建構函式,這裡使用了引數,所以報錯,可以將引數刪除或者將父類的建構函式中新增上引數
		
		//10
//		DBTeacher t = new DBTeacher();//這裡建立物件錯誤,應該為同一個類    
//	      t.sayHi();    
//	      t.giveLesson();    
		
		
		Employee employee =new Employee(001, "emp",0);
		employee.monthsal();
		employee.text();
		Manager manager =new Manager(002, "manager",0);
		manager.monthsal();
		manager.text();
		Director director =new Director(003, "director",0);
		director.monthsal();
		director.text();
	}
}
class Fruit{
String name;
int number;
int price;
public void text()
{
	System.out.print(name+":"+number+","+price);
}
}
class Box{
	int box1,box2,box3;
	public Box(int box1,int box2,int box3){
		this.box1=box1;
		this.box2=box2;
		this.box3=box3;
	}
	public int text(){
		return box1*box2*box3;
	}
}
class Tools{
	public void println()
	{
		System.out.print('\n'); // 換行
	}
	public void println(String info){
		System.out.print(info);
	}
	public void println(double info){
		System.out.print(info);
	}
	public void println(Boolean info){
		System.out.print(info);
	}
}
class Temperature{
	double Stemp;
	public Temperature(double Stemp)
	{
		this.Stemp=Stemp;
	}
	public double text(){
		return (Stemp-32)*5/9;
	}
}
class Person{
	String name;
	boolean gender;
	int age;
	public Person(String name,boolean gender,int age){
		this.name=name;
		this.gender=gender;
		this.age=age;
	}
	public void walk(){
		System.out.print(name+"在行走");
	}
	public void eat(){
		System.out.print(name+"在吃東西");
	}
}
/*
3)設計一個Tools類提供過載方法println()和println(String info),讓其接收不同的資料並能列印字串,數字,布林值和換行列印。
*/
class Teacher {    
	  public void giveLesson() {    
	      System.out.println("知識點講解");    
	      System.out.println("總結提問");    
	  }    
	}    
	class DBTeacher extends Teacher {    
	  public void giveLesson() {    
	      System.out.println("啟動 SqlServer");    
	      super.giveLesson();    
	  }    
	  public void sayHi() {    
	      System.out.println("Hi");    
	  }    
	}   /*
	11).在員工管理系統中,有普通員工,經理,董事三種角色,公司所有的員工都有員工Id,員工名字,員工基本薪水(2000),請假天數;
	現初步定Employee類為父類,Manager子類、Director(董事)子類,它們的區別
	是計算工資方式不一樣。
	具體工資計算辦法:
	A、工資扣除部分:如果請假小於5天,基本工資發75%,大於5天,基本工資發50%  ;
	B、經理的工資=基本工資+住房補貼(基本工資的0.2)+交通補貼(基本工資的0.5)+醫療補貼(500) ;
	C、董事的工資=基本工資+住房補貼(基本工資的0.08)+交通補貼(基本工資的0.3)+醫療補貼(2000)+娛樂補貼(3000) ;
	現完成此係統的設計。*/
	class Employee{
		int id;
		String name;
		double sal=2000;
		int relaxday;
		public Employee(int id,String name,int relaxday){
			this.id=id;
			this.name=name;
			this.relaxday=relaxday;
		}
		public void monthsal(){
			if (1<=relaxday&&relaxday<=5) {
				sal=sal*0.75;
			}
			else if(relaxday>5)
				sal=sal*0.5;}
		public void text(){
			System.out.print("id:"+id+","+"名字:"+name+","+"工資:"+sal+","+"請假天數:"+relaxday+","+'\n');
		}
	}
	//B、經理的工資=基本工資+住房補貼(基本工資的0.2)+交通補貼(基本工資的0.5)+醫療補貼(500) ;
	class Manager extends Employee{
		public Manager(int id, String name, int relaxday) {
			super(id, name, relaxday);
			// TODO Auto-generated constructor stub
		}
		public void monthsal()
		{
			if (1<=relaxday&&relaxday<=5) {
				sal=sal*0.75;
			}
			else if(relaxday>5) sal=sal*0.5;			
			sal=sal+sal*0.2+sal*0.5+500;
		}
	}
	//C、董事的工資=基本工資+住房補貼(基本工資的0.08)+交通補貼(基本工資的0.3)+醫療補貼(2000)+娛樂補貼(3000) ;
	class Director extends Employee{
		public Director(int id, String name,int relaxday) {
			super(id, name, relaxday);
			// TODO Auto-generated constructor stub
		}
		public void monthsal()
		{
			if (1<=relaxday&&relaxday<=5) {
				sal=sal*0.75;
			}
			else if(relaxday>5)
			sal=sal*0.5;			
			sal=sal+sal*0.08+sal*0.3+5000;
		}
	}
	

相關文章