2021年6月24日 星期四

JAVA 實用程式分享-01 計算台灣電費的程式

   這邊難得練習了一個比較實用的程式,目的是輸入度數與是否夏季,得到電費。下面有兩個類別,一個是營業用電,一個是分營業用電。 

類別:家用,即非營業用電費。

// 編寫人:Lancelot Cheng
public class HomeUseBill{
public double degree;
private double moneyPD, bill, aa;
private String season;

public HomeUseBill(String season){
//super(degree);
this.season = season;
}

public double notSummer(double degree){
aa = 0;
if (degree <= 120*2){
moneyPD = 1.63;
aa = degree*moneyPD;
}
if (degree > 120*2 && degree <= 330*2){
moneyPD = 2.1;
aa = 195.6*2 + ( degree - 120*2 )*moneyPD;
}
if (degree > 330*2 && degree <= 500*2){
moneyPD = 2.89;
aa = 636.6*2 + ( degree - 330*2 )*moneyPD;
}
if (degree > 500*2 && degree <= 700*2){
moneyPD = 3.94;
aa = 1127.9*2 + ( degree - 500*2 )*moneyPD;
}
if (degree > 700*2 && degree <= 1000*2){
moneyPD = 4.6;
aa = 1915.9*2 + ( degree - 700*2 )*moneyPD;
}
if (degree > 1000*2){
moneyPD = 5.03;
aa = 3295.9*2 + ( degree - 1000*2 )*moneyPD;
}
return aa;
}

public double summer(double degree){
aa = 0;
if (degree <= 120*2){
moneyPD = 1.63;
aa = degree*moneyPD;
}
if (degree > 120*2 && degree <= 330*2){
moneyPD = 2.38;
aa = 195.6*2 + ( degree - 120*2 )*moneyPD;
}
if (degree > 330*2 && degree <= 500*2){
moneyPD = 3.52;
aa = 695.4*2 + ( degree - 330*2 )*moneyPD;
}
if (degree > 500*2 && degree <= 700*2){
moneyPD = 4.8;
aa = 1293.8*2 + ( degree - 500*2 )*moneyPD;
}
if (degree > 700*2 && degree <= 1000*2){
moneyPD = 5.66;
aa = 2253.8*2 + ( degree - 700*2 )*moneyPD;
}
if (degree > 1000*2){
moneyPD = 6.41;
aa = 3951.8*2 + ( degree - 1000*2 )*moneyPD;
}
return aa;
}

public double fee(double degree){
switch (season) {
case "非夏":
//System.out.println("非夏季用電");
bill = notSummer(degree);
break;
case "夏":
//System.out.println("夏季用電");
bill = summer(degree);
break;
default:
System.out.println("不合規定的輸入文字");
}
return bill;
//System.out.println(bill);
}
}


類別:商用,即營業用電費。

// 編寫人:Lancelot Cheng
public class BusiUseBill{
public double degree;
private double moneyPD, bill, aa;
private String season;

public BusiUseBill(String season){
//super(degree);
this.season = season;
}

public double notSummer(double degree){
aa=0;
if (degree <= 330*2){
moneyPD = 2.12;
aa = degree*moneyPD;
}
if (degree > 330*2 && degree <= 700*2){
moneyPD = 2.91;
aa = 699.6*2 + ( degree - 330*2 )*moneyPD;
}
if (degree > 700*2 && degree <= 1500*2){
moneyPD = 3.44;
aa = 1776.3*2 + ( degree - 700*2 )*moneyPD;
}
if (degree > 1500*2 ){
moneyPD = 5.05;
aa = 4528.3*2 + ( degree - 1500*2 )*moneyPD;
}
return aa;
}

public double summer(double degree){
aa=0;
if (degree <= 330*2){
moneyPD = 2.53;
aa = degree*moneyPD;
}
if (degree > 330*2 && degree <= 700*2){
moneyPD = 3.55;
aa = 834.9*2 + ( degree - 330*2 )*moneyPD;
}
if (degree > 700*2 && degree <= 1500*2){
moneyPD = 4.25;
aa = 2148.4*2 + ( degree - 700*2 )*moneyPD;
}
if (degree > 1500*2 ){
moneyPD = 6.43;
aa = 5548.4*2 + (degree - 1500*2 )*moneyPD;
}
return aa;
}

public double fee(double degree){
//System.out.println(degree);

switch (season) {
case "非夏":
//System.out.println("非夏季用電");
bill = notSummer(degree);
break;
case "夏":
//System.out.println("夏季用電");
bill = summer(degree);
break;
default:
System.out.println("不合規定的輸入文字");
}

return bill;
//System.out.println("電費 = " + degree + " * " + moneyPD + " = " + bill);
}
}


主程式:宣告你要的物件,並實作輸入"夏"或是"非夏"的字串,使用物件的 fee 方法,輸入度數。

// 編寫人:Lancelot Cheng
public class Main {
public static void main(String[] args) {

// 非營業用
BusiUseBill lancelotHome = new BusiUseBill( "非夏");
// 營業用
HomeUseBill lancelotStore = new HomeUseBill( "非夏");

System.out.println("非營業用電費:" + lancelotHome.fee(330));
System.out.println("營業用電費:" + lancelotStore.fee(170));
}
}

結果:

非營業用電費:636.6
營業用電費:360.40000000000003

  我寫完後發現有更好的寫法,不過也懶得改了,下一次寫程式之前,會多想一想。



沒有留言:

張貼留言