2013-10-17 76 views
0

嗨,那裏我創建了一個類來運行另一個Test類,但是我遇到了一些問題。 我已經宣佈agePremium和ticketPremium爲私人雙打。我後來在2種方法中分別使用它們來計算溢價。但是,當它到達的地方,我想運用互聯網計算的變量在另一個計算這裏Java:方法返回問題

/* 
public double premium() { 

    if (ticket <4){ 
     return ((BASE_PREMIUM*value) * agePremium) * ticketPremium; 
    } 
    else { 
     System.out.println("Sorry, you have too many tickets !!"); 
     return 0; 
    } 
} 
*/ 

它不會從我的方法讀出的值的部分,而是讀取1從聲明和初始化。

private double agePremium = 1; 私人雙人門票= 1;

它將它們相乘。

我該如何讓他們將他們鏈接到對方,並用新值替換1並乘以。由於

import java.util.Scanner; 

public class Driver { 
    private int age; 
    private int ticket; 
    private double value; 
    final double BASE_PREMIUM=0.05; 
    private double agePremium =1; 
    private double ticketPremium =1; 


    Scanner scanner = new Scanner(System.in); 

    public void read() { 

     System.out.println("Driver’s Age?"); 
     age = scanner.nextInt(); 
     System.out.println("Number of Tickets?"); 
     ticket = scanner.nextInt(); 
     System.out.println("Value of Car?"); 
     value = scanner.nextDouble(); 
    } 

    public double premium() { 

     if (ticket <4){ 
      return ((BASE_PREMIUM*value)*agePremium)*ticketPremium; 
     } 
     else { 
      System.out.println("Sorry, you have too many tickets !!"); 
      return 0; 
     } 
    } 



    public void premiumAge() { 
     if (age > 29) { 
      agePremium += 0; 
     } 
     else if (age <= 29 && age >= 25) { 
      agePremium += 0.10; 
     } 
     else { 
      agePremium += 0.15; 
     } 
    } 

    public void premiumTicket() { 
     switch (ticket) { 
     case '1': 
      ticketPremium += 0.1; 
      break; 
     case '2': 
      ticketPremium += 0.25; 
      break; 
     case '3': 
      ticketPremium += 0.50; 
      break; 
     case '0': 
      ticketPremium += 0.00; 
     default: 
      ticketPremium = 0.00; 
      break; 
     } 
    }   
} 
+0

你有沒有打電話給你的'溢價()'和'premiumAge()'訪問?如果是這樣,那麼顯示代碼,你正在實例化'驅動程序' –

+0

只是想知道'agePremium + = 0;'是想要做什麼? – Pshemo

+0

@Pshemo漂亮真棒吧? –

回答

0

我想你忘記調用方法premiumAge()premiumTicket()

他們似乎是修改agePremiumticketPremium的人。

0

在某個方向上,您需要撥打premiumAge()premiumTicket(),才能進行計算。可能從premium()方法的某處可能是一個好主意。

請注意,將計算值保留在字段中並不像計算它們的方法實際返回結果那樣好。

1

你的方法應該是有點像這樣,爲了訪問另一個類的私有數據域返回double

public double premiumAge() { 
    if ... 
     return agePremium; 
    else if ... 
     return .... 
    ... 
} 

你需要返回一個值使用的方法在另一個類,如果你」重新期待一個價值。 另外值得注意的是命名約定。當您想要訪問私有數據字段的方法時,請使用前綴爲get的數據字段的名稱,例如。 agePremiumgetAgePremium();

從另一個類

Driver driver = new Driver(); // create a Driver object (instantiate) 
System.out.println(driver.premiumAge()); 

// Or if you follow the naming convention in your Driver class 
System.out.println(driver.getAgePremium()); 
+0

看起來你實際上解密了代碼試圖做的事情 –