码迷,mamicode.com
首页 > 其他好文 > 详细

九度OJ平台练习 —— 题目1010

时间:2016-05-16 17:14:09      阅读:230      评论:0      收藏:0      [点我收藏+]

标签:

技术分享

这道题目,只不过把加法拐了个弯,数字用英文单词的方式给出,本质其实没有变化。我们要做的,只是根据单词识别出它所代表的数字。

Java代码如下:

import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner cin = new Scanner(System.in);
        while(cin.hasNext()){
            String s = cin.nextLine();
            int temp = 0, res = 0;
            for(int i = 0; i < s.length(); i++){
//temp用于存储加数
//当加数为两位数时,例如one two表示12,中间有个空格,需要做判断,0x20是空格的十六进制ASCII码
if(i == 0 || (s.charAt(i-1) == 0x20 && s.charAt(i) != ‘+‘ && s.charAt(i) != ‘=‘)){ temp = temp*10+str2num(s,i); } else if(s.charAt(i) == ‘+‘){ res += temp; temp = 0; } else if(s.charAt(i) == ‘=‘){
//这时res为第一个加数的值,temp为第二个加数的值,如果两个都为0,根据题意,退出
if(temp == 0 && res == 0) return ; else{ res += temp; temp = 0; } } } System.out.println(res); } }
//单词转数字,用switch解决  
public static int str2num(String s,int index){ switch(s.charAt(index)){ case ‘z‘:return 0;//zero case ‘o‘:return 1;//one case ‘t‘: if(s.charAt(index+1) == ‘w‘) return 2;//two else return 3;//three case ‘f‘: if(s.charAt(index+1) == ‘o‘) return 4;//four else return 5;//five case ‘s‘: if(s.charAt(index+1) == ‘i‘) return 6;//six else return 7;//seven case ‘e‘:return 8;//eight case ‘n‘:return 9;//nine default:return 0; } } }

 

九度OJ平台练习 —— 题目1010

标签:

原文地址:http://www.cnblogs.com/mudao/p/5498436.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!