2016-12-05 2 views
0

Я пытаюсь создать программу, которая проверяет, какая учетная запись имеет самую низкую стоимость, но я не знаю, как реализовать это в своей программе.Как я могу сравнить два значения в наследовании в java?

Я хочу, чтобы выбрать выход каждого класса отдельно для сравнения (dayTimeCost)

Это то, что я думаю, что это может быть implemted, но я не знаю, как

если (BronceDayTimeCost < SilverDayTimeCost) { System.out.print ("\ NThe Bronze счета является самым дешевым.");}

если (SilverDayTimeCost < BronceDayTimeCost) {System.out.print ("\ NThe Silver Account является самым дешевым.");}

бронза Класс

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"; 
    } 
} 

Silver Class

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

Добро пожаловать на переполнение стека! Похоже, вы просите о помощи на дому. Хотя у нас нет проблем с самим собой, обратите внимание на эти [dos and don'ts] (http://meta.stackoverflow.com/questions/334822/how-do-i-ask-and-answer-homework-questions/338845 # 338845), и соответственно отредактируйте свой вопрос. –

+1

Вы должны больше узнать о наследовании. Серебро не должно наследовать от Бронзы. Скорее он должен наследовать. (Ради демонстрации, а не необходимости) от чего-то более абстрактного, такого как уровень. – DejaVuSansMono

ответ

1

Вы можете Coll ect тип returncalcDayTimeCost в переменную 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."); 
} 

Хотя ваш код работает, он не встраивать с объектно-ориентированного программирования, т.е., в общем, мы создаем классы рядный с объектами реального мира, но Bronze и Silver два различных элемента, то есть, они непосредственно не связаны/наследовать друг друга.

Другими словами, когда вы говорите ClassAextendsClassB, вы говорите, что ClassA IS-A 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 
    } 
Смежные вопросы