[英]Overriding methods and inheritance in Java
我正在嘗試使用父類Pet和子類Dog和Cat來完成代碼。 寵物類定義變量,子類計算每只寵物可以安全攝入的每種葯物(卡洛芬和醋丙嗪)的數量。
我在主要方法中調用卡洛芬和醋丙嗪方法時遇到問題。 我不知道我做錯了什么。
它返回的卡洛芬和乙酰丙嗪值始終為0.0
import java.util.Scanner;
class Pet {
String kind;
double weight;
double atotalAmount;
double ctotalAmount;
public Pet(String startKind, double startWeight) {
kind = startKind;
weight = startWeight;
}
public String getKind() {
return kind;
}
public void setKind(String newValue) {
kind = newValue;
}
public double getWeight() {
return weight;
}
public void setWeight(double newValue) {
weight = newValue;
}
public double calcCarprofen(double weight) {
return ctotalAmount;
}
public double calcAcepromazine(double weight) {
return atotalAmount;
}
}
class Cat extends Pet {
public Cat(String startKind, double startWeight) {
super(startKind, startWeight);
}
public double calcCarprofen(double weight) {
double c = 12.0;
double ccatdose = .25;
double ctotalAmount = (((weight) / (2.2)) * ((ccatdose) / (c)));
return ctotalAmount;
}
public double calcAcepromazine(double weight) {
double a = 10.0;
double acatdose = .002;
double atotalAmount= (((weight) / (2.2)) * ((acatdose) / (a)));
return atotalAmount;
}
}
class Dog extends Pet {
public Dog(String startKind, double startWeight) {
super(startKind, startWeight);
}
public double calcCarprofen(double weight) {
double c = 12.0;
double cdogdose = .5;
double ctotalAmount = 0.0;
ctotalAmount = (((weight) / (2.2)) * ((cdogdose) / (c)));
return ctotalAmount;
}
public double calcAzepromazine(double weight) {
double a = 10.0;
double adogdose = .03;
double atotalAmount = 0.0;
atotalAmount = (((weight) / (2.2)) * ((adogdose) / (a)));
return atotalAmount;
}
}
public class Ch7Ex8 {
public static void main(String[] args) {
double startWeight;
String startKind;
Scanner keyboard = new Scanner(System.in);
System.out.println("Is this a cat or dog?: ");
startKind = keyboard.nextLine();
System.out.println("Please enter the pet's weight: ");
startWeight = keyboard.nextDouble();
Cat usersCat = new Cat(startKind, startWeight);
Dog usersDog = new Dog(startKind, startWeight);
double catcdose = usersCat.calcCarprofen( double weight);
double catadose = usersCat.calcAcepromazine( double weight);
double dogcdose = usersDog.calcCarprofen( double weight);
double dogadose = usersDog.calcAcepromazine( double weight);
System.out.println("The total cat carprofen dose is: " + catcdose);
System.out.println("The total cat acepromazine dose is: " + catadose);
System.out.println("The total dog carprofen dose is: " + dogcdose);
System.out.println("The total dog acepromazine dose is: " + dogadose);
}
}
不確定這是否是唯一的問題,但您應該更改
double catcdose=usersCat.calcCarprofen(double weight);
double catadose=usersCat.calcAcepromazine(double weight);
double dogcdose=usersDog.calcCarprofen(double weight);
double dogadose=usersDog.calcAcepromazine(double weight);
至
double catcdose=usersCat.calcCarprofen(weight);
double catadose=usersCat.calcAcepromazine(weight);
double dogcdose=usersDog.calcCarprofen(weight);
double dogadose=usersDog.calcAcepromazine(weight);
而且,如果您打算將weight
變量傳遞給這些方法,則必須給它一個初始值。 也許您打算代替傳遞startWeight
。
再看一遍,也許這些方法根本不需要weight參數,因為您已經將weight傳遞給了構造函數並將其存儲在實例的成員中。
另外,請確保正確使用方法名稱。 我看到calcAzepromazine
在一些地方和calcAcepromazine
別人。
您不會以這種方式調用方法
Pet.
double catcdose=usersCat.calcCarprofen(double weight);
應該是
double catcdose=usersCat.calcCarprofen(weight);
這是代碼:
public class Ch7Ex8 {
public void Ch7Ex8 () {
}
public static void main(String [] args) {
double startWeight;
String startKind;
double weight=0;
Scanner keyboard= new Scanner(System.in);
System.out.println("Is this a cat or dog?: ");
startKind=keyboard.nextLine();
System.out.println("Please enter the pet's weight: ");
startWeight= keyboard.nextDouble();
if (startKind=="cat" || startKind=="Dog") {
Pet usersPet=new Pet(startKind, startWeight);
Cat usersCat= new Cat(startKind, startWeight);
double catcdose=usersCat.calcCarprofen();
double catadose=usersCat.calcAcepromazine();
System.out.println("The total cat carprofen dose is: "+catcdose);
System.out.println("The total cat acepromazine dose is: "+catadose);
} else if (startKind=="dog" || startKind=="Dog") {
Pet usersPet=new Pet(startKind, startWeight);
Dog usersDog= new Dog(startKind, startWeight);
double dogcdose=usersDog.calcCarprofen();
double dogadose=usersDog.calcAcepromazine();
System.out.println("The total dog carprofen dose is: "+dogcdose);
System.out.println("The total dog acepromazine dose is: "+dogadose);
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.