2013-03-04 61 views
0

在手边的问题是每个策略号是9个字符的字符串,其中表示保单排序由第一字符

  • B的类型建立政策
  • 为内容
  • Ç政策
  • L用汽车政策

每个保单号码的其余8个字符的生命政策

  • V是一个十进制数。

    我一直在使用的charAt尝试,但有人告诉我有一个稍微好一点的办法

    public String getpolicyNo(String initpolicyNo) { 
    
        /** 
        * Access method to find the first character of the policy to then 
        * determine what type of policy it is. 
        */ 
        String b = "B"; 
        String C = "C"; 
        String L = "L"; 
        String V = "V"; 
    
        char c1 = b.charAt(0); 
        char c2 = C.charAt(0); 
        char c3 = L.charAt(0); 
        char c4 = V.charAt(0); 
    
    
        if (c1 == 0) { 
         System.out.println("Its building" + c1); 
         return initpolicyNo; 
        } else { 
         if (c2 == 0) { 
          System.out.println("Its Content"); 
          return initpolicyNo; 
         } else { 
          if (c3 == 0) { 
           System.out.println("Its life"); 
           return initpolicyNo; 
          } else { 
           if (c4 == 0) { 
            System.out.println("Its car"); 
    
            return initpolicyNo; 
           } 
          } 
         } 
        } 
        throw new IllegalArgumentException(); 
    } 
    

    我不是找你提供给我一个答案,我只是在寻找任何可能的替代品和可能的建议。

    非常感谢

  • +0

    您可以使用'之开关来代替。休息很好。 – 2013-03-04 12:14:33

    +0

    由于c1-4是字符,你怎么比较它为0? – aa8y 2013-03-04 12:15:21

    +0

    你不想比较initpolicyNo.chartAt(0)吗? – BobTheBuilder 2013-03-04 12:16:28

    回答

    3

    我真的不知道你想达到什么样的,但我会写这样:

    public String getpolicyNo(String initpolicyNo) { 
        switch(initPolicyNo.charAt(0)) 
        { 
         case 'B': 
          System.out.println("Its building B"); 
          return initpolicyNo; 
         case 'C': 
          System.out.println("Its building C"); 
          return initpolicyNo; 
         case 'L': 
          System.out.println("Its building L"); 
          return initpolicyNo; 
         case 'V': 
          System.out.println("Its building V"); 
          return initpolicyNo; 
        } 
    
        throw new IllegalArgumentException(); 
    } 
    
    1

    我建议你使用Enum。 Enum的每个值都有一个序号值,您可以按其排序。
    如果你想阅读介绍枚举,以下网站将帮助:Enum Types - The Java Tutorials

    enum Policy { 
        BUILDING_POLICY, CONTENTS_POLICY, LIFE_POLICY, CAR_POLICY 
    } 
    

    对于每一个枚举值,你可以指定一个自定义值,使用它可以进行排序。

    0

    我一直在使用的charAt尝试,但有人告诉我有一个稍微 更好的办法

    有没有更好的方式来获得一个字符串比使用的charAt的第一个字母。

    而不是有很多如果/开关,什么不是,多一点OOPs在你的头。

    Map<Character, String> myMap = new HashMap<Character, String>() {{ 
         put('B', "Its building"); 
         put('C', "Its content"); 
         put('L', "its life"); 
         put('V', "its vehicle"); 
        }} ; 
        public void iShouldBeDoingMyOwnWork(String initpolicyNo) { 
         System.out.println(myMap.get(initpolicyNo.charAt(0))); 
        } 
    
    0
    public String getpolicyNo(String initpolicyNo) { 
    
         switch (initpolicyNo.charAt(0)) { 
         case 'B': 
          System.out.println("Its building"); 
          break; 
         case 'C': 
          System.out.println("Its Content"); 
          break; 
         case 'L': 
          System.out.println("Its life"); 
          break; 
         case 'V': 
          System.out.println("Its car"); 
          break; 
         default: 
          throw new IllegalArgumentException(); 
          break; 
         } 
         return initpolicyNo; 
    } 
    
    0

    你可以添加enums到您的代码,或者你可以使用一个switch语句代替if/else块的,你目前有:

    char type = initpolicyNo.charAt(0); 
        switch (type) { 
         case 'B': 
          // do stuff 
          break; 
         case 'C': 
          // do stuff 
          break; 
        } 
    

    注:我想你可能有问题在你的代码中,在我看来你应该打开initpolicyNo,而不是实际的类型?

    1
    public void whatItIs(String s){ 
    
        if(s.length() < 1){ 
        //-- nothing to see here --- 
        return; 
        } 
    
        //-- case insensitive -- 
        char c = Character.toUpperCase(s.charAt(0)); 
    
        switch(c){ 
        case 'B': 
         //-- its a building !-- 
         break; 
        case 'C': 
         //-- its a c........ !-- 
         break; 
        case 'L': 
         //-- its a l........ !-- 
         break; 
        case 'V': 
         //-- its a v........ !-- 
         break; 
        default: 
         //-- its something else :(-- 
        } 
    }