0

ここで問題となるのは、各証券番号は、保険証券の種類を示す 9 文字の文字列です。

  • ポリシーを構築するための B
  • コンテンツ ポリシーの C
  • Lフォーライフの方針
  • Vフォーカーポリシー

ポリシー番号の残りの 8 文字はそれぞれ 10 進数です。

私は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();
}

私はあなたに答えを求めているわけではありません。可能な代替案や提案を探しているだけです。

どうもありがとう

ダン

4

6 に答える 6

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();
}
于 2013-03-04T12:19:58.870 に答える
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 :(--
  }
}
于 2013-03-04T12:20:20.350 に答える
1

を使用することをお勧めしますEnum。Enum の各値には順序値があり、並べ替えることができます。
列挙型の概要を読みたい場合は、次のサイトが役に立ちます:列挙型 - Java チュートリアル

enum Policy {
     BUILDING_POLICY, CONTENTS_POLICY, LIFE_POLICY, CAR_POLICY
}

列挙値ごとに、並べ替えに使用するカスタム値を割り当てることができます。

于 2013-03-04T12:13:27.337 に答える
0

charAtを使ってみましたが、もう少し良い方法があると誰かに言われました

文字列の最初の文字を取得するには、charAtを使用するよりも良い方法はありません。

そして、多くのif /スイッチなどを用意するのではなく、頭の上のOOPをもう少し増やします。

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)));
    }
于 2013-03-04T12:15:53.130 に答える
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;
}
于 2013-03-04T12:17:12.543 に答える
0

enumsコードに追加するか、現在持っているブロックswitchの代わりにステートメントを使用できます。if/else

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

initpolicyNo注:実際のタイプではなく、をオンにする必要があるように思われるという点で、コードに問題がある可能性があると思いますか?

于 2013-03-04T12:18:11.097 に答える