2017-09-22 7 views
-2

私はeclipseを使ってプログラムをコーディングしています。このif文を単純化する方法はありますか?文を簡略化する方法

if(departmentName.equalsIgnoreCase("Business Management")){ 
     departmentName = "SBM"; 
     } 
     if(departmentName.equalsIgnoreCase("Chemical & Life Sciences")){ 
     departmentName = "SCL"; 
     } 
     if(departmentName.equalsIgnoreCase("Design")){ 
     departmentName = "SDN"; 
     } 
     if(departmentName.equalsIgnoreCase("Engineering")){ 
     departmentName = "SEG"; 
     } 
     if(departmentName.equalsIgnoreCase("Oral Health Therapy")){ 
     departmentName = "SHS(AH)"; 
     } 
     if(departmentName.equalsIgnoreCase("Nursing")){ 
     departmentName = "SHS(N)"; 
     } 
+0

側ノードとして。 "Chemical&Life Sciences" .equalsIgnoreCase(departmentName) –

+1

スイッチケースを使用する – mrid

+0

switch文をこの目的のために使用できます :https://docs.oracle.com/javase/tutorial/java/nutsandbolts/ switch.html – grsdev7

答えて

0

は、JDK 7ので、あなたはStringオブジェクトにswitchステートメントを使用することができます。 これを見るlink @Tim Biegeleisenの答えをチェックしてください。

switchを使用すると、コードはよりコンパクトで読みやすくなりますが、パフォーマンスは大幅に向上しません。

古いJDKのバージョンを使用している場合、私はあなたが可能不要なチェックを行っていることから、あなたのコードを修正するためにあなたをお勧めします:

if(departmentName.equalsIgnoreCase("Business Management")){ 
    departmentName = "SBM"; 
} 
else if(departmentName.equalsIgnoreCase("Chemical & Life Sciences")){ 
    departmentName = "SCL"; 
} 
else if(departmentName.equalsIgnoreCase("Design")){ 
    departmentName = "SDN"; 
} 
else if(departmentName.equalsIgnoreCase("Engineering")){ 
    departmentName = "SEG"; 
} 
else if(departmentName.equalsIgnoreCase("Oral Health Therapy")){ 
    departmentName = "SHS(AH)"; 
} 
else if(departmentName.equalsIgnoreCase("Nursing")){ 
    departmentName = "SHS(N)"; 
} 
+0

何百もの 'string'を比較しない限り、' switch'最適化に気づかないでしょう –

+0

何千もの可能性があります。何千回もの繰り返しのタイトなループで 'switch'を実行します。 :-)しかし、それはそこにないと同じではありません。良い編集。 –

1

あなたはswitchステートメントを使用して、あなたの様々な期待値に対して大文字小文字を区別しない部署名を比較することができます。

if (departmentName == null) return; 
switch(departmentName.toLowerCase()) { 
    case "business management": 
     departmentName = "SBM"; 
     break; 

    case "chemical & life sciences": 
     departmentName = "SCL"; 
     break; 

    // other cases 
    default: 
     "Not Found"; 
     break; 
} 

私は部門名がnullなる場合のリターンを行います注意してください。あなたはコードをそのヌル値に入れようとしない限り、あなたが望むところではnullを扱うことができます。

1

Tim's switch answerおそらく方法です。

しかし、別の代替はMap<String,String>でこれらのマッピングを格納し、すべて小文字ですキーの下にエントリを格納して使用するか、大文字と小文字を区別しない側面を処理するために

departmentName = theMap.get(departmentName); 

経由でそれらを得ることであろう

departmentName = theMap.get(departmentName.toLowerCase()); 

this questionの回答を見ると、大文字と小文字を区別しない部分を行う他の方法があります。

-1
さんが好きな場合は、複数のを避けるために、 "スイッチ" の条件を使用することができます

スイッチ(選択) { ケース1: //文の(); 休憩。 ケース2: // statement(); 休憩。 //あなたの他の例 // ...}

関連する問題