java - 在 if else 中初始化变量但不起作用,如何正确初始化它们?

标签 java if-statement variables initialization

Java 初学者!我需要找出为什么当我在 if else 语句中初始化时“discount”和“discountnum”一直说它们需要初始化。我不想像对待其他变量那样接受这两个变量的用户输入。我该如何解决这个问题,让它只发布数字?

import java.util.Scanner;
package com.company;

public class Coffee {

    public static void main(String[] args) {

        Scanner scan = new Scanner(System.in);
        String name = scan.nextLine();
        double prevpurchases = scan.nextDouble();
        double saleamount = scan.nextDouble();
        double discountnum;
        double totalamount;
        int discount;
        double amountsaved;

        System.out.println("Welcome to Starbucks.\n"+
                "Please enter your name: " + name);

        System.out.println("Please enter the current purchase amount: " + saleamount);

        System.out.println("Please enter the number of purchases in the last month: " + prevpurchases);

        if (saleamount < 5){
            discountnum = 0;
            amountsaved = 0.00;
        } else {
            if (prevpurchases == 0) {
                discountnum = 0.05;
                discount = 5;
            }
            else if (prevpurchases >= 1 && prevpurchases <= 5){
                discountnum = 0.10;
                discount = 10;
            }
            else if (prevpurchases >= 6 && prevpurchases <= 10){
                discountnum = 0.15;
                discount = 15;
            }
            else if (prevpurchases >= 11 && prevpurchases <= 15){
                discountnum = 0.20;
                discount = 20;
            }
            else if (prevpurchases >= 16 && prevpurchases <= 20){
                discountnum = 0.25;
                discount = 25;
            }
            else if (prevpurchases >= 21){
                discountnum = 0.30;
                discount = 30;
            }
        }

        System.out.println("***********************\n" +
                "Receipt for " + name);
        System.out.println("You get a " + discount + "% discount.");

        amountsaved = saleamount * discountnum;
        totalamount = saleamount - amountsaved;

        System.out.println("Total amount due: $ " + totalamount);
        System.out.println("You saved $ " + amountsaved);
        System.out.println("***********************\n");

    }
}

输出示例:

欢迎来到星巴克。

请输入您的姓名:Brian B Bryan

请输入当前购买金额:12.78 美元

请输入上个月的购买次数:14

<小时/>

布莱恩·B·布莱恩 (Brian B Bryan) 的收据

您可以获得 20% 的折扣。

应付款总额:10.22 美元

您节省了 2.56 美元

<小时/>

最佳答案

你“可能”有一个案例,它不会通过你的任何 if-else-if。尝试使用此代码。

if (saleamount < 5){
        discountnum = 0;
        amountsaved = 0.00;
    } else {
        if (prevpurchases == 0) {
            discountnum = 0.05;
            discount = 5;
        }
        else if (prevpurchases >= 1 && prevpurchases <= 5){
            discountnum = 0.10;
            discount = 10;
        }
        else if (prevpurchases >= 6 && prevpurchases <= 10){
            discountnum = 0.15;
            discount = 15;
        }
        else if (prevpurchases >= 11 && prevpurchases <= 15){
            discountnum = 0.20;
            discount = 20;
        }
        else if (prevpurchases >= 16 && prevpurchases <= 20){
            discountnum = 0.25;
            discount = 25;
        }
        else if (prevpurchases >= 21){
            discountnum = 0.30;
            discount = 30;
        } else {
            //this is the missing/needed initialization
            //if neither one of the tests you have above, you need to somehow initialize the variable.
        }
    }

关于java - 在 if else 中初始化变量但不起作用,如何正确初始化它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59995427/

相关文章:

java - 当登录尝试超过 3 次时,用户无法使用 Spring Security Rest API 登录?

javascript - 与 mailto 一起使用的 JS 变量未更新

java - jax-ws/wsimport 生成带有 void 返回的 WebMethod - 相同的 Request/ResponseWrapper

c# - 针对多个值测试变量?

python - 如何有条件地创建列表?

javascript - Javascript 中 boolean 语句是如何计算的

list - TCL:检查变量是否为列表

Javascript 局部变量声明

java - maven中最新的javax.servlet.jsp jsp-api版本稳定吗?

java - Intent 结果到 "Unfortunately, app has stopped."