2016-12-05 10 views
0

どのアカウントのコストが最も低いかを確認するプログラムを作成しようとしていますが、プログラムでこれを実装する方法がわかりません。 Javaで継承の2つの値を比較するにはどうすればよいですか?

私は別にこれは私がそれをimplemtedすることができると思うものですが、私は知らない(dayTimeCost)

を比較するために、各クラスの出力を選択する

方法

場合(BronceDayTimeCost < SilverDayTimeCost){ System.out.print( "\ nのブロンズアカウント安価である。");}

(SilverDayTimeCost < BronceDayTimeCost)であれば{System.out.print( "\ nの銀アカウント安価である。");}

ブロンズクラス

public class Bronze { 

    // ----------------- Atributes ----------------------- 



    public int dayMinutes;  // daytime telphone minutes used 

    public double dayTimeCost; //Total daytime calls cost 

    // ------------- CONSTRUCTORS (inputs) --------------- 

    public Bronze(int theDayMinutes) { 
    dayMinutes = theDayMinutes; 
    } 
    // ------------------ METHODS ------------------------ 
    // Calculate Total daytime calls cost 
    public double calcDayTimeCost(double costDay) { 

     dayTimeCost = dayMinutes * costDay; 
     System.out.print("\nCost of daytime calls = " + costDay + "/min"+ 
     "\n\nTotal daytime calls cost = " + dayTimeCost + 
     "\n"); 

     return dayTimeCost; 
    } 

    //toString method to override that in Object 
    public String toString(){ 
    return(
"\n" 
     ); 
    } 

    //Returns the type of account 
    public String type(){ 
    return "Bronze"; 
    } 
} 

シルバークラス

public class Silver extends Bronze { 

    private static final double costDay = 0.22; 

    public Silver(int theDayMinutes) { 
    super(theDayMinutes); 

    } 
    //Returns the type of account 
    public String type(){ 
    return "Silver"; 
    } 

} 

メインクラス

あなたはコルでき
import java.util.Scanner; 

public class AccountUser { 

    // ------------------- FIELDS ------------------------  

    // Create instance of Scanner class 
    public static Scanner input = new Scanner(System.in); 
    // variables 
    public static Bronze bron; 
    public static Silver silv; 

    public static int dayMinutes; 

    // ------------------ METHODS ------------------------ 

    public static void main(String [] args) { 

     // Input dayMinutes (with error message) 
     do{ 
     System.out.print("Please daytime telphone minutes used --> "); 
     dayMinutes = input.nextInt(); 
     if (dayMinutes <= 0){System.out.print("\n" + "Input value outside the range!!!" + "\n");} 
     }while(dayMinutes <= 0); 


     // Create new Bronze instance 
     bron = new Bronze(dayMinutes); 
     silv = new Silver(dayMinutes); 
     // Calculate scheme1, scheme2 
     bron.calcDayTimeCost(0.12); 
     silv.calcDayTimeCost(0.22); 


    System.out.println(bron); 
    System.out.println(silv); 
    } 
} 
+1

ようこそ!宿題の助けを求めているようです。それ自体に問題はありませんが、これらのことを守ってください(http://meta.stackoverflow.com/questions/334822/how-do-i-ask-and-answer-homework-questions/338845#338845)、それに応じて質問を編集してください。 –

+1

継承についてもっと知っておくべきです。シルバーはブロンズから継承してはならない。むしろそれは継承すべきです。 (必要性ではなくデモンストレーションのために)より抽象的な、レベルのようなものから。 – DejaVuSansMono

答えて

1

タイプのcalcDayTimeCostメソッドを以下のように変数doubleに入力し、ifおよびelseの条件を使用して、どのコストがより低いかを確認します。

double bronCost = bron.calcDayTimeCost(0.12); 
double silverCost = silv.calcDayTimeCost(0.22); 
if(bronCost == silverCost) { 
    System.out.print("\nThe Silver and Bronze Accounts are same cost "); 
} else if (bronCost < silverCost){ 
    System.out.print("\nThe Bronze Account is cheapest."); 
} else { 
    System.out.print("\nThe Silver Account is cheapest."); 
} 

あなたのコードは動作しますが、それはオブジェクト指向プログラミングのつまりをインライン化されていない、一般的に、我々は現実世界のオブジェクトとインラインクラスを作成しますが、BronzeSilver二つの異なる要素、すなわち、彼らは直接関係しません/お互いを継承する。あなたはextendsClassBClassAは、あなたがClassAがいることを言っていると言うつまり

、IS-ClassB

だから、これに代わるアプローチは次のとおりです。スタックオーバーフローへ

public abstract class Metal { 

     //add fields applicable for all metals 

     public double calcDayTimeCost() { 
      //add code here 
     } 
    } 

    public class Bronze extends Metal { 

     //Bronze specific details 
    } 

    public class Silver extends Metal { 

     //Silver specific details 
    } 
関連する問題