手头的问题是每个政策编号是一个由9个字符组成的字符串,表示保险单的类型
保单号的其余8个字符中的每一个都是十进制数字。
我尝试过使用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 :(得分: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 :(得分:1)
我建议您使用Enum
。 Enum的每个值都有一个序数值,您可以按其排序
如果您想阅读Enums简介,以下网站将提供帮助:Enum Types - The Java Tutorials
enum Policy {
BUILDING_POLICY, CONTENTS_POLICY, LIFE_POLICY, CAR_POLICY
}
对于每个枚举值,您可以指定一个自定义值,您可以使用该值对其进行排序。
答案 2 :(得分: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 :(--
}
}
答案 3 :(得分:0)
我尝试过使用charAt,但是有人告诉我有一点点 更好的方式
没有比使用charAt更好的方法来获取字符串的第一个字母。
而不是拥有大量的if / switch以及什么不是,可以在你的头上获得更多的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)));
}
答案 4 :(得分: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;
}
答案 5 :(得分:0)
您可以在代码中添加enums
,也可以使用switch
语句代替当前的if/else
代码:
char type = initpolicyNo.charAt(0);
switch (type) {
case 'B':
// do stuff
break;
case 'C':
// do stuff
break;
}
注意:我认为您的代码可能存在问题,因为在我看来您应该启用initpolicyNo
,而不是实际类型?