0

こんにちは、別の Test クラスを実行するクラスを作成しましたが、いくつかの問題に直面しています。agePremium と ticketPremium の両方をプライベート double として宣言しました。私は後でそれらを 2 つの方法で使用して、それぞれ保険料を計算します。しかし、ここで計算された変数を別の計算で使用したい部分に到達すると、

/* 
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 を読み取ります。

プライベート ダブル agePremium = 1; プライベート ダブル チケットPremium = 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;
        }
    }           
}
4

3 に答える 3

1

メソッドはdouble、別のクラスのプライベート データ フィールドにアクセスするために を返す、このようなものにする必要があります。

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

値が必要な場合は、別のクラスでメソッドを使用するために値を返す必要があります。また、命名規則にも注意してください。メソッドでプライベート データ フィールドにアクセスする場合は、データ フィールドの名前にプレフィックス「geteg.」を付けて使用します。agePremium: getAgePremium();

別のクラスからアクセスするには

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());
于 2013-10-17T01:07:31.660 に答える
0

premiumAge()メソッドとを呼び出すのを忘れたと思いますpremiumTicket()

agePremium彼らは と を変更しているようですticketPremium

于 2013-10-17T01:04:57.593 に答える
0

途中で、計算を行うためにpremiumAge()andを呼び出す必要があります。premiumTicket()おそらく、premium()メソッドのどこかからが良い考えでしょう。

計算された値をフィールドに保持することは、それらを計算するメソッドが実際に結果を返すようにすることほど良い考えではないことに注意してください。

于 2013-10-17T01:05:55.123 に答える