Java 按第一个字符排序
现在的问题是每个保单编号都是一个由9个字符组成的字符串,其中9个字符表示保单的类型Java 按第一个字符排序,java,Java,现在的问题是每个保单编号都是一个由9个字符组成的字符串,其中9个字符表示保单的类型 B.建筑政策 C.内容政策 终身保单 五、汽车政策 保单编号的剩余8个字符中的每一个都是十进制数字 我尝试过使用charAt,但有人告诉我有一种稍微好一点的方法 public String getpolicyNo(String initpolicyNo) { /** * Access method to find the first character of the policy to t
- B.建筑政策
- C.内容政策
- 终身保单
- 五、汽车政策
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();
}
我不是在找你为我提供答案,我只是在寻找任何可能的替代方案和可能的建议
非常感谢
Dan我建议您使用
Enum
。枚举的每个值都有一个序数值,您可以按其排序。如果您想阅读Enum简介,以下网站将提供帮助:
对于每个枚举值,可以指定一个自定义值,您可以使用该值进行排序。我建议您使用
枚举。枚举的每个值都有一个序数值,您可以按其排序。
如果您想阅读Enum简介,以下网站将提供帮助:
对于每个枚举值,可以指定一个自定义值,您可以使用该值进行排序
我试过使用charAt,但有人告诉我有点小问题
更好的方法
没有比使用charAt更好的方法来获取字符串的第一个字母
与其有很多if/switch之类的东西,不如在头的一侧多点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)));
}
Map myMap=newhashmap(){{
put(‘B’,‘其建筑物’);
put(‘C’,“其内容”);
put(‘L’,‘它的生命’);
放置(‘V’,“其车辆”);
}} ;
public void IshouldbedBedingMyownWork(字符串initpolicyNo){
System.out.println(myMap.get(initpolicyNo.charAt(0));
}
我试过使用charAt,但有人告诉我有点小问题
更好的方法
没有比使用charAt更好的方法来获取字符串的第一个字母
与其有很多if/switch之类的东西,不如在头的一侧多点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)));
}
Map myMap=newhashmap(){{
put(‘B’,‘其建筑物’);
put(‘C’,“其内容”);
put(‘L’,‘它的生命’);
放置(‘V’,“其车辆”);
}} ;
public void IshouldbedBedingMyownWork(字符串initpolicyNo){
System.out.println(myMap.get(initpolicyNo.charAt(0));
}
您可以将枚举
添加到您的代码中,或者您可以使用开关
语句代替当前具有的if/else
块:
char type = initpolicyNo.charAt(0);
switch (type) {
case 'B':
// do stuff
break;
case 'C':
// do stuff
break;
}
注意:我认为您的代码可能有问题,因为在我看来您应该打开initpolicyNo
,而不是实际的类型?您可以向代码中添加enum
,或者您可以使用switch
语句,而不是当前具有的if/else
块:
char type = initpolicyNo.charAt(0);
switch (type) {
case 'B':
// do stuff
break;
case 'C':
// do stuff
break;
}
注意:我认为您的代码可能有问题,因为在我看来您应该打开initpolicyNo
,而不是实际的类型?我不确定您想要实现什么,但我会这样写:
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();
}
我不确定你想要达到什么目标,但我会这样写:
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();
}
public void(字符串s){
如果(s.长度()<1){
//--这里没什么可看的---
返回;
}
//--不区分大小写--
char c=Character.toUpperCase(s.charAt(0));
开关(c){
案例“B”:
//--这是一座建筑物--
打破
案例“C”:
//--是c--
打破
案例“L”:
//--它是一个l--
打破
案例“V”:
//--这是一个v--
打破
违约:
//--这是另外一回事:(--
}
}
公共无效内容(字符串s){
如果(s.长度()<1){
//--这里没什么可看的---
返回;
}
//--不区分大小写--
char c=Character.toUpperCase(s.charAt(0));
开关(c){
案例“B”:
//--这是一座建筑物--
打破
案例“C”:
//--是c--
打破
案例“L”:
//--它是一个l--
打破
案例“V”:
//--这是一个v--
打破
违约:
//--这是另外一回事:(--
}
}
您可以使用开关
代替。其余的都可以。既然c1-4是字符,您如何将其与0进行比较?是否要比较initpolicyNo.chartAt(0)?并且您只需返回作为参数的策略编号(initpolicyNo
)打印后。这将打印所有内容。我相信你的解决方案弄错了。这里的排序问题是什么?你可以使用开关来代替。其余的都可以。既然c1-4是字符,你如何将其与0进行比较?不想比较initpolicyNo.chartAt(0)?打印后,您只需返回作为参数的保单编号(initpolicyNo
)。这将打印所有保单编号。我相信您的解决方案是错误的。这里的排序问题是什么?