题目描述大致如下:

输入六个数,分别代表CNY对HKD的汇率,USD对CNY的汇率,GBP对USD汇率,输入货币的数目,输入的货币种类,结果的种类(MAX或MIN),如 1 2 3 100 CNY MAX。注意,允许多行输入。

入参要求:数字不能为负数,不能有小数点,字符串必须为存在值。。。。等等等一大篇幅的要求。。

结果要求:MAX为啥啥来着,MIN为啥啥来着。

难点分析:题意不是很好理解,这里的MAX,是从最大货币开始求解?,MIN从最小货币求解?!!!还有就是入参检测比较繁琐。。。

给了个例子如下:

输入

1 2 3  100 CNY MAX

16 GBP 2 USD

输出

3 2 2 1200 CNy MAX

ERROR

(⊙o⊙)…题目描述记不太清了。。还是直接上代码吧

package com.syr.test.t1;import java.util.Scanner;/*** @author sunyiran* @createTime 2019-11-24 21:10*/
public class Main {/*** 如果按照面向对象思想来设计,那么我们应该对该题设计一个求解对象*/public static class SolutionWay {/*** 定义常量*/private static final String GBP = "GBP";private static final String USD = "USD";private static final String CNY = "CNY";private static final String HKD = "HKD";private static final String MAX = "MAX";private static final String MIN = "MIN";private static final String ERROR = "ERROR";/*** 以HKD为基准汇率*/private static int gbpRate;private static int usdRate;private static int cnyRate;private static int inputNum;private static String inputType;private static String resultType;private static void setParam(int a, int b, int c, int num, String inputT, String resultT) {gbpRate = a * b * c;usdRate = a * b;cnyRate = a;inputNum = num;inputType = inputT;resultType = resultT;}private static int getRate(String type) {switch (type) {case GBP:return gbpRate;case USD:return usdRate;case CNY:return cnyRate;default:return 1;}}private static boolean checkNum(String num) {char c1 = num.charAt(0);if (c1 < '1' || c1 > '9') {return false;}for (int i = 1; i < num.length(); i++) {char c = num.charAt(i);if (c < '0' || c > '9') {return false;}}return true;}private static boolean checkType(String type) {return type.equals(HKD) || type.equals(CNY) || type.equals(USD) || type.equals(GBP);}private static boolean checkResultType(String resultType) {return resultType.equals(MAX) || resultType.equals(MIN);}/*** Max是从GBP开始算起** @return*/private static String getMaxResult() {int tempV = getRate(inputType) * inputNum;StringBuilder result = new StringBuilder();if (tempV / gbpRate > 0) {result.append(tempV / gbpRate).append(' ').append("GBP ");tempV = tempV % getRate(GBP);}if (tempV / usdRate > 0) {result.append(tempV / usdRate).append(' ').append("USD ");tempV = tempV % getRate(USD);}if (tempV / cnyRate > 0) {result.append(tempV / cnyRate).append(' ').append("CNY ");tempV = tempV % getRate(CNY);}if (tempV > 0) {result.append(tempV).append(' ').append("HKD");}return result.toString();}/*** min理应用的HKD** @return*/private static String getMinResult() {return inputNum * getRate(inputType) + " HKD";}private static String computer(String input) {String[] strArr = input.split("\\s");if (strArr.length == 6 && (checkNum(strArr[0]) && checkNum(strArr[1]) && checkNum(strArr[2]) && checkNum(strArr[3]) && checkType(strArr[4]) && checkResultType(strArr[5]))) {setParam(Integer.parseInt(strArr[0]), Integer.parseInt(strArr[1]), Integer.parseInt(strArr[2]), Integer.parseInt(strArr[3]), strArr[4], strArr[5]);if (resultType.equals(MAX)) {return getMaxResult();} else {return getMinResult();}} else {return ERROR;}}}public static void main(String[] args) {Scanner in = new Scanner(System.in);StringBuilder result = new StringBuilder();while (in.hasNextLine()) {result.append(SolutionWay.computer(in.nextLine())).append("\n");}System.out.println(result);}
}

记录一次华为特战队的机试题相关推荐

  1. 华为校园招聘Java机试题

    又到校园招聘的时候了,前几天听同学说华为校招还要考上机,然后就在网上找往年的机试题,找到之后就开始战斗了..下面的题目都是在网上找的,然后代码是自己一个一个写的... 1.程序实现目标: 输入一个字符 ...

  2. 华为2020实习生招聘机试题

    华为机试题 第一题(100分) 题目描述 给出一行字符串,包含2组年月日,通过"|"进行分隔,年月日之间通过一个空格进行分隔,其中仅第一组的年月日包含星期几,请推算出第二组的年月日 ...

  3. 华为2021届实习机试题

    笔试正确率:20% + 20% + 100% 笔试分数:0.2 * 100 + 0.2 * 200 + 1* 300= 360分,过100分数线 4.8号机试,目前很多题目细节不太记得了,是4月下旬面 ...

  4. 2014届华为成都校园招聘机试题

    转载请注明:http://blog.csdn.net/ydm2011/article/details/11683325 本文试题权利华为公司所有,若侵犯权利,请通知,本人立即删除! 1. 输入正整数, ...

  5. 华为2014校园招聘机试题

    2013.10.9 上午9:00开始 先吐槽一下,学校的机房.我严重怀疑学校机房的VS2010是不是坏的,折腾了半天,一个测试的hello world程序都不能跑.最后,二十多分钟之后,我放弃了,果断 ...

  6. 华为:货币汇率机试题

    ///其实是修改的别人的代码,代码不分家,共享靠大家,留作以后复习参考. import java.util.Scanner; ///题目是  1英镑=2美元=16人民币=32港元 ///MAX为最大兑 ...

  7. 华为2015校园招聘机试题

    1. 括号合法性判断 给定一个只有'('和')'的字符串,判断其在语法逻辑上是否合法. 解答:这题用栈的方法,每遇到左括号进栈,遇到右括号则将左括号弹出,没得弹出则非法,最后判断栈不为空也非法. 还有 ...

  8. 华为2017年大牛机试题—10进制转换位12进制

    第一编程题是将10进制转换为12进制输出: 如输入:14. 输出为12; import java.util.*; public class Main { public static void main ...

  9. 2015华为校园招聘机试题一

    2015华为校园招聘机试题<一> 今天无意之间看到了2015年华为校园招聘的机试题,于是,做了下,写出来与大家共享.先看第一题: 题目如下: 按要求分解字符串,输入两个数M,N:M代表输入 ...

最新文章

  1. 自定义audio样式
  2. c语言1a和$20比较大小,[转载]Compare过程(字符的查询与比较)
  3. 华硕老毛子(Padavan)——校园局域网路由表设置(校园网优先局域网访问)
  4. UI5 navigation logic
  5. 2017计算机考试题上机,2017年计算机二级上机考试试题及答案
  6. 东南大学王萌 | “神经+符号”学习与多模态知识发现
  7. Java笔记-读取资源文件应该注意的问题(大文件解析、\r\n分割相关的)
  8. c# url编码 字母编码_我如何通过每天30分钟编码来完成#100DaysOfCode挑战
  9. ASP.NET事件顺序
  10. Jquery怎么获取select选中项 自定义属性的值
  11. pydobc连接sql server_pyodbc 连接sql server
  12. Spring总结七:AOP动态代理的实现
  13. 计算机无法安装ae,Windows10系统AE软件无法安装如何处理
  14. har后缀文件怎么提取?
  15. mysql varbinary 插入_Mysql中如何插入VarBinary二进制类型?
  16. matlab三边定位算法,利用matlab分别对三边测量定位算法和改进算法进行仿真和验证...
  17. 推荐一个项目管理工具:TAPD
  18. html a4纸张大小像素,CSS设定A4纸张大小
  19. 【失业的程序员】选修计算机专业的伤与痛.....
  20. 谷歌gmail注册入口_Google向GMail添加免费电话语音通话

热门文章

  1. c/c++常用算法(14) -- 经典数据结构(约瑟环夫问题)
  2. 南通开发区:打造长三角大数据产业发展高地
  3. python时间序列教学_Python入门进阶教程-时间序列
  4. 可变长度操作码(扩展操作码)
  5. 用c语言编写心里测试,写了个心理测试的c程序(*^__^*) 嘻嘻……
  6. Matlab 绘制球面
  7. ORA-01578: ORACLE 数据块损坏 之奇妙处理 DBV
  8. 5.7.24mysql 配置安卓,安卓按键精灵连接MySQL全面解析Windows下安装 mysql5.7的方法
  9. 二维离散变换由c语言编写,C++实现离散余弦变换(参数为二维指针)(示例代码)...
  10. Raspberry-Pi-PICO系列--第八篇 高级篇使用SWD接口下载和调试(第二章)