2012-08-30 22 views
0

末尾的字符串邮政编码稍后会用作我的代码中的输入,正如您所看到的,它是硬编码的。我想要做的是让它更具活力。所以布尔pc4被设置为接受4位邮政编码的国家。 pc5是5位数字,pc6是6位数字。Java - 更新if语句中的字符串

我想要做的是一样的东西:

if(pc4==true){String postcode="1234"} 

正如你们已经知道,这并不if语句之外工作。

所以我的问题是:我可以更新if语句之外的字符串还是有更有效的方法到达我需要的位置?

String state1 = "state"; 

boolean pc4 = (bString.equals("Bahrain") || bString.equals("Afghanistan") 
      || bString.equals("Albania") || bString.equals("Armenia") 
      || bString.contains("Australia") 
      ... 
      || bString.equals("Tunisia") ||bString.equals("Venezuela")); 
boolean pc5 = (bString.equals("Alan Islands") || bString.equals("Algeria") 
      || bString.equals("American Samoa") || bString.equals("Wallis and Futuna") 
      ... 
      || bString.equals("Zambia")); 
boolean pc6 = (bString.equals("Belarus") || bString.equals("China") 
      || bString.equals("Colombia") || bString.equals("India") 
      ... 
      || bString.equals("Turkmenistan") || bString.equals("Viet Nam")); 

String postcode = "123456"; 
+0

这显然是滥用内联if语句。 –

+0

你在哪里更新什么? – JohnB

+1

当他们发布有关如何改进代码的问题时,我不认为有必要让某人因糟糕的代码而倒下。 –

回答

6

定义postcode外块,并分配根据条件值到它。

类似下面:

String postcode=""; 


if(pc4){postcode="1234"} 
+2

'if(_ == true)'是多余的。 –

+0

@ThomSmith:同意。更新了答案。 – kosa

+0

这是我刚才使用的代码,它没有工作:String postcode =“”; if(pc4){postcode =“1234”;} else if(pc5){postcode =“12345”;} else if(pc6){postcode =“123456”;} – Omz

0
String postcode = null; // or "" 
if (pc4) 
    postcode = "1234"; 
else if (pc5) 
    postcode = "12345"; 
else if (pc6) 
    postcode = "123456"; 
else 
    postcode = "default value"; 
1

使用三元条件运算符。

String postcode = pc4 ? "1234" : ""; 
2

虽然切向你原来的问题,而不是巨大的单行if语句,它可能是更容易使用Map来定义你的邮政编码的长度。

HashMap<String, Integer> countries = new HashMap<>(); 
countries.add("Bahrain", 4); 

switch(countries.get(myCountry)) { 
    case 4: 
    // Stuff! 
} 
+1

最近的Java会自动装入'int's,所以你不需要'new Integer() '。 –

+0

此外,我同意一个简单的地图可能是做到这一点的最佳方式。 –

+0

+1,因为提供修复这堆“||”树的方法会更有帮助。 – raina77ow