2014-01-22 36 views
0

這是控制檯。在用戶決定計算什麼後輸入數值。從類返回的值爲零。我有私人變量,訪問器和增變器。我不知道這是什麼原因。有任何想法嗎??請!!!當前代碼在運行時僅返回0值

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

請,使我們更容易幫助你,張貼[最小的,完整的,經過測試和讀示例](HTTP ://stackoverflow.com/help/mcve)。換句話說,我們可以運行代碼來測試它。請注意,我們可能沒有'bp.Circuit'庫。 – Christian

+0

您能否刪除與您的問題無關的所有內容?這包括微不足道的getter/setter和評論。下面的bp.Circuit是 –

+0

。對不起 – user2856759

回答

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,這裏的問題是,你必須通過調用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; 

您必須對其他swith-cases做類似的更改。

1

你從來沒有真正調用任何巡迴類calc...()方法。

1

您需要在最終的打印語句之前調用適當的calc方法。

例如,當userChoiceUSER_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; 
0

這裏是

您呼叫myCircuit.getVoltage()

,並在功能你不計算任何問題

例如

public double getVoltage() { 
    return voltage; 
} 

改爲調用

myCircuit.calcVoltage()

+0

@csmckelvey已更新 –

+0

我繼續添加myCircuit.calcVoltage(),myCircuit.calcResistance(),myCircuit.calcAmperage();,之後用戶在返回語句之前輸入最後一個輸入。這應該做到這一點 – user2856759

0

你可以打電話給你的卡。在每一個getter方法類似方法..

public double getAmperage() { 
    calcAmperage(); 
    return amperage; 
} 



public double getVoltage() { 
    calcVoltage(); 
    return voltage; 
}