具有货币格式,百分比和half_up四舍五入的Java输出

时间:2015-10-01 20:25:17

标签: java string formatting string-formatting

JAVA OUTPUT问题,请帮忙。

如何格式化两个输出,首先是使用HALF_UP舍入和货币格式化输出,第二个是输出具有百分比的输出?

支持文档:

(A)原始作业

面向对象编程简介

编程作业 - 优惠券

超市根据客户在杂货上花费的金额来奖励优惠券。例如,如果您花费50美元,您将获得价值8%的优惠券。下表显示了用于计算已花费的不同金额的优惠券的百分比。编写一个程序,根据购买的杂货和折扣后支付的金额计算并打印一个人可以收到的优惠券价值。

花钱

优惠券百分比

不到10美元

没有优惠券

介于10美元到60美元之间

8%

介于$ 61和$ 150之间

10%

介于$ 151和$ 210之间

12%

超过210美元

14%

注意,如指定的那样,不清楚如何处理边界条件。例如,150.25美元的优惠券百分比是多少?您应该决定如何处理边界条件,并确保在程序文档中解释您的选择。

您的程序应使用货币实例格式化美元金额,使用百分比实例格式化百分比。它们都可以在java.text.NumberFormat包中找到。使用HALF_UP舍入模式进行货币显示。

以下是一个示例运行: 跑: 请输入杂货的费用:78.24 你赚了7.82美元的折扣。 (购买的10%) 请支付70.42美元。感谢您与我们一起购物!

(B)到目前为止的代码

import java.util.Scanner;
import java.text.NumberFormat;

public class Coupon {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here


        Scanner input = new Scanner(System.in);
        NumberFormat currency = NumberFormat.getCurrencyInstance();


        //Variables 
        double amountSpent=0;
        double couponAmount = 0;
        double totalAfterCoupon= 0; 
        final double lessThanTen = 0.00;
        final double betweenTenAndSixity = 0.08;
        final double betweenSixtyOneAndOneHundredAndFifty = 0.10;
        final double betweenOneHundredAndFiftyOneAndTwoHundredAndTen = 0.12;
        final double overTwoHundredAndTen = 0.14;



        System.out.print("Please enter the cost of your groceries: ");
        amountSpent = input.nextDouble();

        if (amountSpent<10 && amountSpent>=0)
        {
            couponAmount = lessThanTen * amountSpent;
            System.out.printf("You earned a discount of ", currency.format(couponAmount), "(0% of your purchase)");
        }
        else if (amountSpent>=10 && amountSpent<=60.49)
        {
            couponAmount = betweenTenAndSixity * amountSpent;
            System.out.printf("You earned a discount of ", currency.format(couponAmount), "(10% of your purchase)");
        }
        else if (amountSpent>=60.50 && amountSpent<=150.49)
        {
            couponAmount = betweenSixtyOneAndOneHundredAndFifty * amountSpent;
        }
        else if (amountSpent>=150.50 && amountSpent<=210)
        {
            couponAmount =  betweenOneHundredAndFiftyOneAndTwoHundredAndTen* amountSpent;
        }
        else if (amountSpent>210) 
          {
            couponAmount =  overTwoHundredAndTen* amountSpent;
          }
        else 
        {
        System.out.println("Please enter your total bill between $0.00 or greater. ");
        }

        System.out.printf("the coupon amount is: %f ", couponAmount);        
    }

}

1 个答案:

答案 0 :(得分:0)

注意: 我注意到你是一个新手,我会免费给你这个(我们都需要先学习东西) ),但请记住,SO中的某些规则;询问作业更正或不良研究相关问题不予理解,特别是如果它们都适用。同样如上所述,您应该将问题缩小到相关代码的特定部分,以便其他具有相同问题的人可以轻松复制或找到它。

如果您的格式问题得到解答,您可以在Oracle的官方文档中获得一些惊人的资源,学习如何使用他们的文档,您将立即获得Java的支持。在NumberFormat课程中,他们有https://docs.oracle.com/javase/tutorial/i18n/format/numberFormat.html,您还需要有关Java语言环境的信息:https://docs.oracle.com/javase/8/docs/api/java/util/Locale.html

使用NumberFormat类需要做的是创建一个您将要使用的语言环境的实例,如:Locale enUSLocale = new Locale.Builder().setLanguage("en").setRegion("US").build(); 还有其他多种方法可以做到这一点。

然后使用此语言环境指示NumberFormat类要使用的内容:

//Instantiate the NumberFormat:
NumberFormat USFormat = NumberFormat.getCurrencyInstance(enUSLocale);

//And print it:
System.out.println("You earned a discount of " + USFormat.format(couponAmount));

嗯,我希望这能为您提供继续学习在线使用文档和其他信息的基础!

Goo(gle)d Luck!