2013渣打科营编程马拉松赛 初始题目

来源:互联网 发布:js获取文本框内容 编辑:程序博客网 时间:2024/05/16 11:11
/***  用java编写,写的比较乱,没有体现面向对象,哈哈,结果是对的。欢迎评论!***/

题目:https://github.com/aqingsao/length/blob/master

length

题目介绍

您要做的是一个长度单位转化和计算工具,能够把不同的长度单位转换为标准长度(米),并且可以在不同单位之间进行加减运算。

输入文件

输入文件input.txt的内容可分为两部分:

  1. 不同单位和标准长度米的转换规则, 比如

1 mile = 1609.344 meters, 代表1英里等于1609.344米;

  1. 转换前或者计算前的单位,比如 1.2 miles // 一个长度 1.2 miles + 1 fath - 0.2 meters // 单位可能不同的长度之间的加减运算

您要做的

我们期望您编写一个应用程序,可以读取输入文件,了解不同单位与米之间的转换规则后,把以不同单位表示的长度都转换为标准单位米;同时计算不同单位长度的加减表达式,得到以米为单位的结果。

做题要求:

  • 请一定Fork本仓库再做题目

  • 使用的编程语言不限

  • 输出结果为文件"output.txt",其格式见下面说明

  • 源代码和结果文件"output.txt"上传到您的GitHub代码库中

  • 结果文件“output.txt”一定要放到代码库的根目录下

输出文件格式

该文件的格式共有12行,并严格遵守以下规则:

  • 第1行是您在渣打编程马拉松官网上报名时的注册邮箱,比如myName@gmail.com

  • 第2行是空行

  • 第3行至第12行,每行显示1个计算结果,比如1931.21 m

  • 计算结果要求精确到小数点后两位

  • 计算结果均以字母m结尾,请注意数字和字母m之间有一个空格。

-----------------------------------------------------------------------------------------------------------------------------------//代码package com.cjs.test;import java.io.BufferedReader;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.text.DecimalFormat;import java.text.NumberFormat;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;public class Testout {/** * @param args */@SuppressWarnings("null")public static void main(String[] args) {Map ma = new HashMap();StringBuffer biaozhun = new StringBuffer();/** * 读文件 */FileReader file = null;try {file = new FileReader("D:///input.txt");BufferedReader buff = new BufferedReader(file);boolean eof = false;while(!eof){String line = buff.readLine();if(line == null){eof = true;}else{//System.out.println(line);//biaozhun.append(":"+line+":");if(line.equals("")){biaozhun.append(line+";");}else{biaozhun.append(line+"::");}//System.out.println(biaozhun.toString());}}buff.close();} catch (IOException e) {e.printStackTrace();}String[] guize = biaozhun.toString().split("\n");//System.out.println(guize[0]);String[] guize1 = guize[0].split(";");//规则String define1 = guize1[0];//表达式String define2 = guize1[1];String[] define11 = define1.split("::");String[] define22 = define2.split("::");String[] define111 = null;for (int i = 0; i < define11.length; i++) {//System.out.println(define11[i]+"pppppppppppp");define111 = define11[i].split(" ");String keykk = "";String valuekk = "";for (int j = 0; j < define111.length; j++) {//System.out.println(define111[j]+"vvvvvvvvvvvvvvv"+j);/** * 创建转换规则 */if(j==1){keykk = define111[1];//System.out.println("keykk:::::::::"+keykk);}if(j==3){valuekk = define111[3];//System.out.println("valuekk:::::::::"+valuekk);}ma.put(keykk, valuekk);}}//System.out.println(ma.get("furlong"));/** * 计算表达式 */List ls = new ArrayList();for (int i = 0; i < define22.length; i++) {//System.out.println(define22[i]+"oooooooo");String[] define222 = null;define222 = define22[i].split(" ");ls.add(define222);}NumberFormat formatter = new DecimalFormat("0.00");//计算Map result = new HashMap();Double temp = 0.00;for (int i = 0; i < ls.size(); i++) {Object[] ob = (Object[])ls.get(i);temp = 0.00;int flag = 1;for (int j = 0; j < ob.length; j++) {Double mile = 0.00;Double yard = 0.00;Double inch = 0.00;Double foot = 0.00;Double fath = 0.00;Double furlong = 0.00;if(ob[j].equals("mile")||ob[j].equals("miles")){if(flag==-1){mile = Double.parseDouble(ob[j-1].toString())*Double.parseDouble((String) ma.get("mile"))*(-1);temp += mile;flag = 1;}else{mile = Double.parseDouble(ob[j-1].toString())*Double.parseDouble((String) ma.get("mile"));temp += mile;flag = 1;}}else if(ob[j].equals("yard")||ob[j].equals("yards")){if(flag==-1){yard = Double.parseDouble(ob[j-1].toString())*Double.parseDouble((String) ma.get("yard"))*(-1);temp += yard;flag = 1;}else{yard = Double.parseDouble(ob[j-1].toString())*Double.parseDouble((String) ma.get("yard"));temp += yard;flag = 1;}}else if(ob[j].equals("inch")||ob[j].equals("inches")){if(flag==-1){inch = Double.parseDouble(ob[j-1].toString())*Double.parseDouble((String) ma.get("inch"))*(-1);temp += inch;flag = 1;}else{inch = Double.parseDouble(ob[j-1].toString())*Double.parseDouble((String) ma.get("inch"));temp += inch;flag = 1;}}else if(ob[j].equals("feet")||ob[j].equals("foot")){if(flag==-1){foot = Double.parseDouble(ob[j-1].toString())*Double.parseDouble((String) ma.get("foot"))*(-1);temp += foot;flag = 1;}else{foot = Double.parseDouble(ob[j-1].toString())*Double.parseDouble((String) ma.get("foot"));temp += foot;flag = 1;}}else if(ob[j].equals("faths")||ob[j].equals("fath")){if(flag==-1){fath = Double.parseDouble(ob[j-1].toString())*Double.parseDouble((String) ma.get("fath"))*(-1);temp += fath;flag = 1;}else{fath = Double.parseDouble(ob[j-1].toString())*Double.parseDouble((String) ma.get("fath"));temp += fath;flag = 1;}}else if(ob[j].equals("furlong")){if(flag==-1){furlong = Double.parseDouble(ob[j-1].toString())*Double.parseDouble((String) ma.get("furlong"))*(-1);temp += furlong;flag = 1;}else{furlong = Double.parseDouble(ob[j-1].toString())*Double.parseDouble((String) ma.get("furlong"));temp += furlong;flag = 1;}}else if(ob[j].equals("+")){flag = 1;continue;}else if(ob[j].equals("-")){flag = -1;continue;}}result.put(i,formatter.format(temp));System.out.println("结果:"+result.get(i));}/** * 保存文件 */try {Testout.writeOutput(result);} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}public static void writeOutput(Map result) throws IOException{FileWriter letters = null;try {letters = new FileWriter("D:///output.txt");letters.write("Cai574159008@126.com");letters.write(13);letters.write(10);letters.write(13);letters.write(10);for (int i = 0; i < result.keySet().size(); i++) {letters.write(result.get(i)+" m");letters.write(13);letters.write(10);}} catch (IOException e) {e.printStackTrace();}letters.close();}}
原创粉丝点击