1. 程式人生 > >2019-1-16

2019-1-16

amp ase nis 防止 獨立性 else if == 金額 mon

一、封裝

  什麽是封裝

    將類的某些信息隱藏在類內部,不允許外部程序直接訪問,而是通過該類提供的方法來實現對隱藏信息的操作和訪問

  封裝的步驟

    1、私有化屬性  修改屬性的可見性

    2、創建屬性方法---setter/getter方法  創建公有的setter/getter方法

    3、在set/get方法中設置賦值或取值條件  在setter/getter方法中加入屬性控制語句

  封裝的意義:

    1、便於使用者正確使用系統,防止錯誤修改屬性

    2、有助於系統之間的松耦合,提高系統獨立性

    3、提高軟件的可重用性

    4、降低了構建大型系統的風險

二、課後習題

  1、模擬一個簡單的購房商貸月供計算器,按照以下公式計算總利息和每月還款金額

    總利息=貸款金額*利率;

    每月還款金額=(貸款金額+總利息)、貸款年限

    貸款年限不同利率也不同,如下示例:

    技術分享圖片

package com.java_1_16_fangdai;
/**
 * 計算總計息及月供
 * @author Administrator
 *2019-1-16
 */
public class Rate {
	private double money;//本金
	private double sum;//總利息
	private int year;//年限
	private double monMoney;

	public double getMonMoney() {
		return monMoney;
	}

	public void setMonMoney(double monMoney) {
		this.monMoney = monMoney;
	}

	public int getYear() {
		return year;
	}
	
	//根據選擇確定貸款年限
	public void setYear(int num) {
		if(num==1) {
			this.year = 3;
		}else if(num==2){
			this.year = 5;
		}else if(num==3) {
			this.year = 20;
		}else {
			System.out.println("報歉!目前無此貸款年限,默認5年!");
			this.year = 5;
		}
	}

	public double getSum() {
		return sum;
	}

	public void setSum(double sum) {
		this.sum = sum;
	}

	public double getMoney() {
		return money;
	}

	public void setMoney(double money) {
		this.money = money;
	}
	
	//根據年限算出總利息
	public double rateMoney() {
		switch(year) {
		case 3:
			this.sum = this.money*0.0603;
			break;
		case 5:
			this.sum = this.money*0.0612;
			break;
		case 20:
			this.sum = this.money*0.0639;
		default:
			break;
		}
		return this.sum;
	}
	//計算月供並輸出
	public void monthly() {
		this.monMoney = (this.money + this.sum)/(this.year*12);
		System.out.println("每個月的月供是:"+this.monMoney);
	}
}

  

package com.java_1_16_fangdai;

import java.util.Scanner;

public class RateTest {
	public static void main(String[] args) {
		Scanner cxj = new Scanner(System.in);
		Rate r = new Rate();
		System.out.print("請輸入貸款金額:");
		r.setMoney(cxj.nextDouble());
		System.out.print("請選擇貸款年限(1、3年(36個月)	2、5年(60個月)	3、20年(240個月)):");
		r.setYear(cxj.nextInt());
		System.out.println("總利息是:"+r.rateMoney());
		r.monthly();
	}
}

  結果示例:

技術分享圖片

  2、根據三角形的三條邊長,判斷是直角三角形、鈍角三角形或者銳角三角形

package com.java_1_16_trigon;
/**
 * 判斷三角形種類
 * @author Administrator
 *2019-1-16
 */
public class Trigon {
	private int a;
	private int b;
	private int c;
	
	public int getA() {
		return a;
	}
	public void setA(int a) {
		this.a = a;
	}
	public int getB() {
		return b;
	}
	public void setB(int b) {
		this.b = b;
	}
	public int getC() {
		return c;
	}
	public void setC(int c) {
		this.c = c;
	}
	
	public void trTest() {
		//先判斷是否可以構成三角形
		if(((a+b)>c)&&((a+c)>b)&&((b+c)>a)){
			//如果可以構成三角形,再判斷是否為直角三角形
			if(((a*a+b*b)==c*c)||((a*a+c*c)==b*b)||((b*b+c*c)==a*a)) {
				System.out.println("這是一個直角三角形。");
				//如果不直角,再判斷是鈍角三角形還是銳角三角形
			}else if(((a*a+b*b)<c*c)||((a*a+c*c)<b*b)||((b*b+c*c)<a*a)) {
				System.out.println("這是一個鈍角三角形。");
			}else {
				System.out.println("這是一個銳角三角形。");
			}
		//不足構成三角形
		}else {
			System.out.println("這不是一個三角形。");
		}
	}
	
}

  

package com.java_1_16_trigon;

import java.util.Scanner;

public class TrTest {
	public static void main(String[] args) {
		Scanner cxj = new Scanner(System.in);
		Trigon t = new Trigon();
		boolean select = true;
		do {
			System.out.print("請輸入第一條邊的大小:");
			t.setA(cxj.nextInt());
			System.out.print("請輸入第二條邊的大小:");
			t.setB(cxj.nextInt());
			System.out.print("請輸入第三條邊的大小:");
			t.setC(cxj.nextInt());
			t.trTest();
			System.out.print("請問是否繼續(y/n):");
			String se = cxj.next();
			if(se.equals("n")) {
				select = false;
			}else {
				select = true;
			}
		}while(select);
		System.out.println("感謝您的使用!");
		
	}
}

  結果示例:

技術分享圖片

2019-1-16