如何用java计算手机话费,计算问题

如何用java计算手机话费,计算问题,java,Java,我的任务是用java计算每月的手机账单,我是java新手,还在学习。我似乎不明白计算方法以及如何到达那里。我已经命名了所有变量和常量并初始化了它们,现在我只需要进行计算,以找到总账单的成本。我试图达到的输出是:run:minutes used=675条短信sent/received=1031条data used=605兆字节。你们有数据播放吗?是/否:你有短信计划吗 手机月费:月费计划=39.99短信计划=15.00数据计划=20.00额外计费分钟数=79.85数据超期费=40.00 publi

我的任务是用java计算每月的手机账单,我是java新手,还在学习。我似乎不明白计算方法以及如何到达那里。我已经命名了所有变量和常量并初始化了它们,现在我只需要进行计算,以找到总账单的成本。我试图达到的输出是:run:minutes used=675条短信sent/received=1031条data used=605兆字节。你们有数据播放吗?是/否:你有短信计划吗 手机月费:月费计划=39.99短信计划=15.00数据计划=20.00额外计费分钟数=79.85数据超期费=40.00

public static void main(String[] args) {
        // TODO code application logic here
        Scanner user_input = new Scanner(System.in);

        final double MONTHLY_PLAN_VOICE;
        final int ALLOWABLE_MINUTES;
        final double ADDITIONAL_MINUTE_RATE;
        final double TEXT_MSG_PLAN;
        final double TEXT_MSG_RATE;
        final double DATA_PLAN_RATE;
        final int ALLOWABLE_DATA_INCR;

        MONTHLY_PLAN_VOICE = 39.99; //double cause of decimal
        ALLOWABLE_MINUTES = 500; // int because no need for decimal
        ADDITIONAL_MINUTE_RATE = 0.45; // has decimal 
        TEXT_MSG_PLAN = 15.00; // rate could very depending on user input(double)
        TEXT_MSG_RATE = 0.12; // rate could very depending on user input (double)
        DATA_PLAN_RATE = 20.00; // double cause of decimal
        ALLOWABLE_DATA_INCR = 300; //int cause its an increment

        String minutes;
        System.out.print("Enter the number of minutes used this month: ");
        minutes = user_input.next();
        String texts;
        System.out.print("Do you have a text message plan? (Y/N): ");

        texts = user_input.next();
        System.out.print("Enter the number of sent and recieved texts: ");
        texts = user_input.next();
        String data;
        System.out.print("Do you have a Data plan? (Y/N): ");
        data = user_input.next();
        System.out.print("Enter the amount of Data used: ");
        data = user_input.next();



        if (ALLOWABLE_DATA_INCR < 300) 
        {
        System.out.print("The Cost of data is 20.00$ ");
        }
        else 
        {    
        System.out.println("The cost of data is 40.00$" );
        }


        if (ALLOWABLE_MINUTES > 500)
        {
        System.out.print("");
        }

首先,我个人的选择是保持代码干净,一步到位:

 final double MONTHLY_PLAN_VOICE = 39.99; //double cause of decimal
其次,美元符号$应始终用作数字的前缀。ex$5.99 您的打印声明如下:

 System.out.print("The Cost of data is 20.00$ ");
我建议你把每一件衣服都改得更专业一点

 System.out.print("The cost of data is $20.00.");
现在回答你的问题。 要查找总数,请创建一个类型为double的新变量:

double totalMonthlyBill = 0;
现在,在每个if-else语句中,将账单每个部分的成本添加到此总变量中

例如:

 if (ALLOWABLE_DATA_INCR < 300) 
    {
    System.out.print("The Cost of data is 20.00$ ");
    totalMonthlyBill += 20;
    }
    else 
    {    
    System.out.println("The cost of data is 40.00$" );
    totalMonthlyBill += 40;
    }
这与:

Variable1 = Variable1 + Variable2;
Variable1 = Variable1 + 2;
但在您的情况下,由于您有一个运行总计,并且将根据每个步骤定义成本,因此可以通过定义一个总计变量,然后在每个if/else语句中使用+=将值添加到总计中来轻松实现,您可以稍后调用该值以获得最终价格

System.out.println("Total monthly bill: " + totalMonthlyBill);

希望这能解决问题

为了提交所有代码,我必须创建一个新的答案,因为它太长了,无法发表评论。但是,如果您对它的工作原理有任何疑问,请查看并发表评论,但我认为这是您想要的

    boolean textPlan;
    double numTexts = 0;

    String texts;
    System.out.print("Do you have a text message plan? (Y/N): ");
    texts = user_input.next();
    if (texts.equalsIgnoreCase("y")){
        textPlan = true;
    }
    else{
        textPlan = false;
    }
    System.out.print("Enter the number of sent and recieved texts: ");
    numTexts = user_input.next();

    if (textPlan && numTexts <= 500){
        totalMonthlyBill += TEXT_MSG_PLAN;
    }
    else if (textPlan && numTexts > 500){
        numTexts -= 500; 
        totalMonthlyBill += (numTexts * TEXT_MSG_RATE);
    }
    else{
        totalMonthlyBill += (numTexts * TEXT_MSG_RATE);
    }

上面的代码是我尝试过的,我不明白如果用户有或没有文本计划/数据计划/分钟或超过了这一限制,如何有不同的总成本@Shiven@Shiven我不知道接下来该怎么办,我想我的想法是对的,但我不知道下一步该怎么办。如果这解决了你的问题,请给我这个向上箭头作为答案,如果不让我知道在这项任务中给你带来麻烦的任何其他事情,我将很乐意提供帮助。我还有一个问题,我必须做与处理短信和分钟数据相同的事情。。但棘手的是,如果用户没有文本计划或超过了它在总账单中增加的最长500分钟。例如,超过500分钟的每分钟收费0.45美元,如果你没有短信计划,每段短信收费0.12美元。我怎么把它写进代码@lenc95你知道如何使用布尔值吗?让我给你一个例子来解决这个方法。我不这么认为,但我想我明白了这个想法,我只是不知道如何将它添加到我的代码中,我想我在向你解释这个问题时做得很糟糕,我希望我能向你展示硬件问题:它说不能将字符串转换为双精度:/
    boolean textPlan;
    double numTexts = 0;

    String texts;
    System.out.print("Do you have a text message plan? (Y/N): ");
    texts = user_input.next();
    if (texts.equalsIgnoreCase("y")){
        textPlan = true;
    }
    else{
        textPlan = false;
    }
    System.out.print("Enter the number of sent and recieved texts: ");
    numTexts = user_input.next();

    if (textPlan && numTexts <= 500){
        totalMonthlyBill += TEXT_MSG_PLAN;
    }
    else if (textPlan && numTexts > 500){
        numTexts -= 500; 
        totalMonthlyBill += (numTexts * TEXT_MSG_RATE);
    }
    else{
        totalMonthlyBill += (numTexts * TEXT_MSG_RATE);
    }