这是控制台。在用户决定要计算的内容后输入值。从类返回的值为零。我有私有变量,有访问器和mutator。我不知道这是什么原因。有任何想法吗??请!
public class Console {
public static final int USER_CHOIDE_VOLTAGE = 1;
public static final int USER_CHOIDE_AMPERAGE = 2;
public static final int USER_CHOIDE_RESISTANCE = 3;
public static void main(final String[] args) {
// Creates a Circuit Object
Circuit myCircuit = new Circuit();
// Creates a Scanner Object to get input from user
Scanner keyboard = new Scanner(System.in);
// Holds input from user
int userChoice;
System.out.println("\n");
System.out.println("This system will calculate the ");
System.out.println("\tVoltage, Amperage, or Resistance ");
System.out.println("\tgiven the other two values using Ohms Law.");
System.out.println("\n");
// Ask user what to calculate, if it is not one
// of the options, ask again(while-do loop)
do {
System.out.println("Which value would you like to calculate?");
System.out.println("\t1. Voltage");
System.out.println("\t2. Resistane");
System.out.println("\t3. Amperage");
System.out.println("\n");
System.out.println("Please select 1, 2, or 3");
userChoice = keyboard.nextInt();
//Switch follows cases for what the user would
// like to calculate
switch (userChoice) {
case USER_CHOIDE_VOLTAGE:
// Gets Amperage from User
System.out.println("Please enter the Amperage:");
// Sets Amperage value
myCircuit.setAmperage(keyboard.nextDouble());
// Gets Resistance from User
System.out.println("Please enter the Resistance:");
// Sets Resistance value
myCircuit.setResistance(keyboard.nextDouble());
// Returns Value for voltage from method
System.out.println("The value of Voltage is: "
+ myCircuit.getVoltage());
break;
case USER_CHOIDE_AMPERAGE:
// Gets Voltage from User
System.out.println("Please enter the Voltage:");
myCircuit.setVoltage(keyboard.nextDouble());
// Gets Resistance from User
System.out.println("Please enter the Resistance:");
// Sets Resistance value
myCircuit.setResistance(keyboard.nextDouble());
// Returns Value for Amperage from method
System.out.println("The value of Amperage is: "
+ myCircuit.getAmperage());
break;
case USER_CHOIDE_RESISTANCE:
// Gets Amperage from User
System.out.println("Please enter the Amperage:");
// Sets Amperage value
myCircuit.setAmperage(keyboard.nextDouble());
// Gets Voltage from User
System.out.println("Please enter the Voltage:");
myCircuit.setVoltage(keyboard.nextDouble());
// Returns Value for Resistance from method
System.out.println("The value of Resistance is: "
+ myCircuit.getResistance());
break;
// Do Nothing Since do while loop takes care of this option
default:
}
} while (userChoice != USER_CHOIDE_VOLTAGE
&& userChoice != USER_CHOIDE_AMPERAGE
&& userChoice != USER_CHOIDE_RESISTANCE);
System.exit(0);
keyboard.close();
}
}
这是班级
public class Circuit {
private double voltage, resistance, amperage;
public double getVoltage() {
return voltage;
}
public double getResistance() {
return resistance;
}
public double getAmperage() {
return amperage;
}
public void setVoltage(double pVoltage) {
voltage = pVoltage;
}
public void setResistance(double pResistance) {
resistance = pResistance;
}
public void setAmperage(double pAmperage) {
amperage = pAmperage;
}
public void calcVoltage() {
voltage = amperage * resistance;
}
public void calcResistance() {
resistance = voltage / amperage;
}
public void calcAmperage() {
amperage = voltage / resistance;
}
}
答案 0 :(得分:1)
您实际上从未调用任何Circuit类calc...()
方法。
答案 1 :(得分:1)
您需要在最终的印刷陈述之前调用适当的calc
方法。
例如,当userChoice
为USER_CHOIDE_VOLTAGE
时:
case USER_CHOIDE_VOLTAGE:
// Gets Amperage from User
System.out.println("Please enter the Amperage:");
// Sets Amperage value
myCircuit.setAmperage(keyboard.nextDouble());
// Gets Resistance from User
System.out.println("Please enter the Resistance:");
// Sets Resistance value
myCircuit.setResistance(keyboard.nextDouble());
// *** Add the following line to your program. ***
myCircuit.calcVoltage();
// Returns Value for voltage from method
System.out.println("The value of Voltage is: "
+ myCircuit.getVoltage());
break;
答案 2 :(得分:0)
这是问题
例如
您正在呼叫myCircuit.getVoltage()
并且在函数中你没有计算任何东西
public double getVoltage() {
return voltage;
}
而是打电话
myCircuit.calcVoltage()
答案 3 :(得分:0)
您没有调用calcSomething()
方法,因此,您没有计算任何内容,只是返回(getSomething()
)值而不进行修改。在继续之前,请检查您的打印声明,我认为它们应该是
System.out.println("\t1. Voltage");
System.out.println("\t2. Amperate");
System.out.println("\t3. Resistance");
因为你声明了常量:
public static final int USER_CHOIDE_VOLTAGE = 1;
public static final int USER_CHOIDE_AMPERAGE = 2;
public static final int USER_CHOIDE_RESISTANCE = 3;
继续说明,假设输入为2
,因此switch
会输入case USER_CHOIDE_AMPERAGE
,这就是问题所在,您必须通过调用{来计算“安培” {1}}:
myCircuit.calcAmperage()
您必须对其他case USER_CHOIDE_AMPERAGE:
System.out.println("Please enter the Voltage:");
myCircuit.setVoltage(keyboard.nextDouble());
System.out.println("Please enter the Resistance:");
myCircuit.setResistance(keyboard.nextDouble());
myCircuit.calcAmperage(); // ADD THIS LINE
System.out.println("The value of Amperage is: " + myCircuit.getAmperage());
break;
进行类似的更改。
答案 4 :(得分:0)
您可以拨打电话..每个Getter方法中的方法,如..
public double getAmperage() {
calcAmperage();
return amperage;
}
public double getVoltage() {
calcVoltage();
return voltage;
}