当前位置: 首页 > 知识库问答 >
问题:

货币汇率分配

楚洋
2023-03-14

你好,我在找人帮我做作业!因此,提示如下:

“编写一个程序,提示用户输入美元与人民币之间的汇率。提示用户输入0将美元转换为人民币,输入1将人民币转换为美元。提示用户分别输入美元或人民币金额将其转换为人民币或美元。”y、 当用户输入“1”(从元到美元)时,程序应该使用indexOf()和substring()方法提取小数点前的美元金额,以及小数点后的美分。以下是运行示例,用户的输入带有下划线:

输入美元对人民币的汇率:6.81输入0将美元兑换成人民币,1反之亦然:0输入美元金额:100美元100.0是681.0元。输入美元对人民币的汇率:6.81输入0将美元兑换为人民币,1反之亦然:1输入人民币金额:1000.0元为146.843美元146美元3个季度0美分1个镍币4便士”

所以我让我的代码在把钱分割成美分之前做所有的事情。这就是我的问题所在,我不知道如何使用十进制值(或美分)来显示每个值的数量。这是我的密码

import java.util.Scanner;
public class LabTask6 {
private static Scanner key = new Scanner(System.in);
public static void main(String[] args) {
    // TODO Auto-generated method stub

    double exchangeRate = 0;
    int conversion;
    double dollar = 0;
    double yuan = 0;
    String Dollar = " ";
    int quarter = 0;


    System.out.print("Enter the exchange rate from dollars to RMB: ");
    exchangeRate = key.nextDouble();

    System.out.print("Enter 0 to convert dollars to RMB or "
            + " 1 for RMB to dollars: ");
    conversion = key.nextInt();


    //while(conversion == 0 || conversion == 1) {
    if(conversion == 0) {
        System.out.print("Enter the dollar amount: ");
        dollar = key.nextDouble();
        yuan = dollar * exchangeRate;

        System.out.println("$" + dollar + " is " + yuan + " yuan.");
        System.out.println();

    }else if(conversion == 1) {
        System.out.print("Enter the Yuan amount: ");
        yuan = key.nextDouble();
        dollar = yuan / exchangeRate;

        System.out.printf(yuan + " yuan is%8.3f dollars.", dollar);
        System.out.println();

        Dollar = dollar + "";
        System.out.println(Dollar.substring(0, Dollar.indexOf(".")) + " dollars");
    }

}

}

如您所见,在第二个if语句中,我试图通过将数字转换为字符串并仅显示从索引(0)到“.”的内容来获取“美元”金额烧焦然而,对于其余的必需物品,如镍币、一角硬币、二角五分硬币和一分钱,这将不起作用。我最初的想法是做一个while循环,防止小数(美分)达到零,并增加美分值(声明为变量),只要它们可以被美分值整除,即数字是126.47,我就会取47,看看它是否可以被25整除,然后如果结果是

总而言之,我想打印美元、四分之一、五分之一、一角和一分钱的金额。但我不知道怎么做。

共有1个答案

东郭弘方
2023-03-14

下面是一些示例代码供您查看。请注意,我将您的dollarStr变量重命名为dollarStr,因为根据Java命名约定,变量不应该以大写字母开头。我还想指出,ajb是非常正确的,因为使用double来表示货币不是一个好主意。然而,由于这是一个简单的家庭作业,我怀疑这是否会成为你的问题。

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

...

public static void main(String[] args){
    //omitting extra code to shorten the answer
    ...

    }else if(conversion == 1) {
        System.out.print("Enter the Yuan amount: ");
        yuan = key.nextDouble();
        dollar = yuan / exchangeRate;

        System.out.printf(yuan + " yuan is%8.3f dollars.", dollar);
        System.out.println();

        dollarStr = String.valueOf(dollar);
        System.out.println(dollarStr.substring(0, dollarStr.indexOf(".")) + " dollars");

        //Get the "cents" part of the converted value
        String centsStr = dollarStr.substring(dollarStr.indexOf("."));
        //Convert the value into a double
        double cents = Double.parseDouble(centsStr);
        //Multiplying by 100 so that something like 0.173 dollars 
        // becomes 17.3 cents
        cents *= 100;

        //Assuming you want to round to nearest penny, 
        //  but it's unclear from your question if this is correct.
        cents = Math.round(cents); 

        //quick and dirty conversion of the rounded cents to an integer value
        int change = (int) cents;

        //For demonstration purposes, feel free to remove it.
        System.out.println(cents+ " cents");

        //Calculate how many of each kind of coin and display results.
        Map<Coin, Integer> changeMap = makeChange(change);
        for(Coin coin: changeMap.keySet()){
            int numCoins = changeMap.get(coin);
            System.out.print(numCoins +" "+ (numCoins != 1 ? coin.getPlural() : coin.name().toLowerCase())+" ");
        }
        System.out.print("\n");
    }

}

//Calculates the number of each kind of Coin to use
// in order to make the specified amount of change.
public static Map<Coin,Integer> makeChange(int cents){
    Map<Coin,Integer> results = new HashMap<>();
    for(Coin coin: Coin.values()){
        int numCoins = cents/coin.getValue();
        cents = cents % coin.getValue();

        results.put(coin, numCoins);
    }
    return results;
}

下面是与上述代码一起出现的硬币枚举:

public enum Coin {
    QUARTER(25, "quarters"), DIME(10, "dimes"), NICKEL(5, "nickels"), PENNY(1, "pennies");

    private int value;
    private String plural;

    private Coin(int val, String plur){
        value = val;
        plural = plur;
    }

    public int getValue(){
        return value;
    }

    public String getPlural(){
        return plural;
    }
}

如果您不习惯使用枚举,那么可以将其转换为传统类,并定义一些常量

你仍然需要担心的一些事情是:

  1. 彻底测试你的代码
  2. 处理错误的用户输入-负数,字符串代替数字等。
 类似资料:
  • 问题内容: 我正在建立一个在线订购系统,但我在澳大利亚,对于国际客户,我想以美元或欧元显示价格,这样他们就不必花心思从澳元转换。 有谁知道我是否可以通过PHP脚本访问的易于解析的格式从网上提取最新汇率? 问题答案: 您可以从yahoo以简单的格式获取货币换算: 例如,将GBP转换为EUR:

  • 我试过... 但那就不允许便士条目了。 我想要增量按钮控制在英镑上升,但仍然想要输入便士的能力。 谢谢,1DMF

  • 本文向大家介绍Opencart添加人民币汇率,包括了Opencart添加人民币汇率的使用技巧和注意事项,需要的朋友参考一下 随着中国经济的崛起,人民币作为结算货币在全球的分量越来越重,特别是临近中国的东南亚国家,基本可以实现直接人民币换算结账。所以,在 Opencart 系统中添加人民币汇率也非常必要,当然,也很简单。 1 打开后台,选择  System > Locatisation > Curr

  • 我正在尝试使用函数。 而它应该打印$符号或美元? 我使用linux主机。 谢谢

  • 这是一篇加密货币的入门文章,是写给没有接触过比特币、加密货币的小伙伴的入门指南,接下来的内容,都将与加密货币相关。 前言 “加密货币就是货币”听起来挺“白痴的”。想想背后的意思,言外之意就是“加密货币可能不是货币”,就非常值得玩味了。事实上,在我接触的很多朋友当中,一开始认为后者的更多。包括我自己,也是经过探究一段时间之后,才认定这个结论的。 惯性定律不仅存在于物质世界,也存在于人类的认知世界。人

  • 问题内容: 我正在使用我给定的语言环境获取自定义货币格式。但是,这始终包含我不需要的货币符号,我只想要给定语言环境的正确货币数字格式而没有货币符号。 做一个抛出一个异常.. 问题答案: 以下作品。这有点丑陋,但可以履行合同: 您还可以从货币格式中获取模式,删除货币符号,然后从新模式中重构新格式: