九度online judge-A + B

来源:互联网 发布:java io 装饰器模式 编辑:程序博客网 时间:2024/04/20 17:55

题目来源: http://ac.jobdu.com/problem.php?pid=1010

我的代码:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;
 
public class Main{
    publicstatic void main (String[] args){       
        BufferedReader br =new BufferedReader(newInputStreamReader(System.in));
        String ss =null;
        String[] sa,sa1,sa2;
        intnum1,num2;
        try{
            while((ss = br.readLine()) !=null){
                sa = ss.split("\\+");
                sa1 = sa[0].split(" ");
                sa2 = sa[1].split(" ");
                num1 = trans(sa1);
                num2 = trans(sa2);
                if((num1 == 0) && (num2 ==0)){
                    break;
                }
                System.out.println(num1 + num2);
            }
        }catch(IOException e){
            e.printStackTrace();
        }
         
    }
     
    publicstatic int trans(String[] sa){
        Map<String,Integer> map=newHashMap<String, Integer>();
        map.put("nine",9);
        map.put("eight",8);
        map.put("seven",7);
        map.put("six",6);
        map.put("five",5);
        map.put("four",4);
        map.put("three",3);
        map.put("two",2);
        map.put("one",1);
        map.put("zero",0);
 
        intnum = 0;
        inti;
        for(i = 0;i < sa.length; i ++){
            sa[i] = sa[i].toLowerCase();
            if(map.get(sa[i]) == null){
                continue;
            }
            switch(map.get(sa[i])){
            case9: num = 10* num + 9;break;
            case8: num = 10* num + 8;break;
            case7: num = 10* num + 7;break;
            case6: num = 10* num + 6;break;
            case5: num = 10* num + 5;break;
            case4: num = 10* num + 4;break;
            case3: num = 10* num + 3;break;
            case2: num = 10* num + 2;break;
            case1: num = 10* num + 1;break;
            case0: num = 10* num + 0;break;
            default:break;
            }
        }      
        returnnum;
    }
};

注意:

1.String .split() 是java.lang函数

http://www.cnblogs.com/mingforyou/archive/2013/09/03/3299569.html

(1).如果用“.”作为分隔的话,必须是如下写法,String.split("\\."),这样才能正确的分隔开,不能用String.split(".");

(2).如果用“|”作为分隔的话,必须是如下写法,String.split("\\|"),这样才能正确的分隔开,不能用String.split("|");

“.”和“|”都是转义字符,必须得加"\\";

(3).如果有多个分隔符,可以用|连接,如,“acount=? and uu =? or n=?”,把三个都分隔出来,可以用String.split("and|or");

(4).对于一些用特殊符号分隔的必须用转义字符,不然会抛出异常,或者得不到我们预期的结果

split的参数regex是一个 regular-expression的匹配模式而不是一个简单的String,他对一些特殊的字符可能会出现你预想不到的结果

常见的  "|" -> "\\|"    "*" -> "\\*"   "+" -> "\\+"  "\" ->"\\\"


2. switch-case语句

switch语句的判断条件可以接受int,byte,char,short, enum不能接受其他类型

case后面必须是常量表达式constant expressions

一旦case匹配,就会顺序执行后面的程序代码,而不管后面的case是否匹配,直到遇见break,利用这一特性可以让好几个case执行统一语句

switch在java7才开始支持判断字符串,针对switch不能支持字符串这个问题,可以使用map容器

map<int,string> (或 map<string,int>  ),用字符串对应的索引值(键值)来进行匹配

顺便普及一下枚举类型:

java.lang.Enum.ordinal()方法返回此枚举常量的序数(其枚举声明中的位置,其中初始常量分配的序数为零)。

例子:

package com.yiibai;

import java.lang.*;
 
// enum showing Mobile prices
enum Mobile {
   Samsung(400), Nokia(250),Motorola(325);
 
   int price;
   Mobile(int p) {
      price = p;
   }
   int showPrice() {
      return price;
   }
}

public class EnumDemo {

   public static void main(String args[]) {

     System.out.println("CellPhone List:");
     for(Mobile m : Mobile.values()) {
        System.out.println(m + " costs " + m.showPrice() + " dollars");
     }

     Mobile ret = Mobile.Samsung;
     System.out.println("The ordinal is = " + ret.ordinal());
     System.out.println("MobileName = " + ret.name());                      
   }
}

输出:

CellPhone List:
Samsung costs 400 dollars
Nokia costs 250 dollars
Motorola costs 325 dollars
The ordinal is = 0
MobileName = Samsung

看完这个例子就比较了解枚举了。


3.switch null  http://www.ylzx8.cn/kaifayuyan/program/301058.html

Java中null表示一个不确定的对象,所以它是没有类型的,null本身不是对象,也不是Objcet的实例

所以null更不属于int,byte,char,short, enum中的任一类型,所以传入null的话会报错

0 0
原创粉丝点击