Java:方法返回问题

时间:2013-10-17 01:01:49

标签: java methods return

您好我已经创建了一个类来运行另一个Test类,但我遇到了一些问题。 我已将agePremium和ticketPremium声明为私人双打。我后来在两种方法中使用它们分别计算溢价。但当它到达我想要在另一个计算中使用计算变量的部分时

/* 
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。

私人双倍年龄= 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;
        }
    }           
}

3 个答案:

答案 0 :(得分: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());

答案 1 :(得分:0)

我想您忘记调用方法premiumAge()premiumTicket()

他们似乎是修改agePremiumticketPremium的人。

答案 2 :(得分:0)

在此过程中,您需要致电premiumAge()premiumTicket(),以便进行计算。可能来自premium()方法的某个地方会是一个好主意。

请注意,将计算值保留在字段中并不像计算它们的方法实际返回其结果那样好。