使用阿拉伯数字Integer.valueOf("?")返回整数 1 但Float.valueOf("?")orFloat.parseFloat("?")抛出NumberFormatException而如果使用英语数字则不会抛出任何异常Float.valueOf("1"),这是java中的错误还是有一些解释?
我怎样才能解析这样的数字?
我在 android 环境中工作;
我在很多地方多次调用这个方法:
private String changeFirstCharCase(String word) {
return Character.toLowerCase(word.charAt(0)) + word.substring(1);
}
Run Code Online (Sandbox Code Playgroud)
现在我想在toUpperCase没有创建另一个方法的情况下添加此方法的能力,我需要调用者使用布尔值作为争论来确定使用哪个方法.
private static String changeFirstCharCase(String word, boolean toUpperCase) {
return toUpperCase
? Character.toUpperCase(word.charAt(0)) + word.substring(1)
: Character.toLowerCase(word.charAt(0)) + word.substring(1);
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我要为每次调用添加一个true/false参数.但是当我使用varags时,只需要toUpperCase能力的呼叫需要添加他们的音符,这可能是任何东西.
private static String changeFirstCharCase(String word, String... toUpperCase) {
return toUpperCase.length > 0
? Character.toUpperCase(word.charAt(0)) + word.substring(1)
: Character.toLowerCase(word.charAt(0)) + word.substring(1);
}
Run Code Online (Sandbox Code Playgroud)
通过这种方式,旧方法调用不受影响.
changeFirstCharCase(facadeType);
Run Code Online (Sandbox Code Playgroud)
新的可以打电话:
changeFirstCharCase(facadeType, "toUpperCase")
Run Code Online (Sandbox Code Playgroud)
在可读性和维护的情况下,这是一个aprouch标准吗?