相关疑难解决方法(0)

java有一个不会为坏数据抛出异常的int.tryparse吗?

可能重复:
Java:封装Integer.parseInt()的好方法
如何将字符串转换为float并避免在java中使用try/catch?

C#有Int.TryParse:Int32.TryParse方法(String,Int32%)

这种方法的优点在于它不会为坏数据抛出异常.

在java中,Integer.parseInt("abc")将抛出异常,并且在可能发生这种情况的情况下,很多性能将受到影响.

对于那些性能问题的情况,有没有办法解决这个问题?

我能想到的另一种方法是针对正则表达式运行输入,但我必须测试以查看更快的内容.

java

101
推荐指数
3
解决办法
12万
查看次数

使用try/catch进行最终变量赋值

因为我认为这是一个很好的编程实践,所以final如果它们只打算编写一次,我会创建所有(本地或实例)变量.

但是,我注意到当变量赋值可以抛出异常时,你不能使变量最终变为:

final int x;
try {
    x = Integer.parseInt("someinput");
}
catch(NumberFormatException e) {
    x = 42;  // Compiler error: The final local variable x may already have been assigned
}
Run Code Online (Sandbox Code Playgroud)

有没有办法在不诉诸临时变量的情况下做到这一点?(或者这不是最终修饰符的正确位置?)

java final

64
推荐指数
1
解决办法
2万
查看次数

isNumber(string)方法的最佳实现

在我有限的经验中,我参与了几个项目,这些项目有一些字符串实用程序类,其中包含确定给定字符串是否为数字的方法.这个想法一直都是一样的,然而,实施却有所不同.有些使用try/catch包围解析尝试

public boolean isInteger(String str) {
    try {
        Integer.parseInt(str);
        return true;
    } catch (NumberFormatException nfe) {}
    return false;
}
Run Code Online (Sandbox Code Playgroud)

和其他人匹配正则表达式

public boolean isInteger(String str) {
    return str.matches("^-?[0-9]+(\\.[0-9]+)?$");
}
Run Code Online (Sandbox Code Playgroud)

这些方法中的一种比另一种更好吗?我个人更喜欢使用正则表达式方法,因为它很简洁,但是如果在迭代过程中调用,例如,数十万个字符串的列表,它会在par上执行吗?

注意:由于我是网站的新手,我不完全理解这个社区Wiki业务,所以如果这属于那里让我知道,我很乐意移动它.

编辑: 有了所有的TryParse建议,我把Asaph的基准代码(感谢一个很棒的帖子!)移植到C#并添加了一个TryParse方法.而且看起来,TryParse赢得了胜利.然而,尝试捕获方法耗费了大量时间.我认为我做错了什么!我还更新了正则表达式来处理负数和小数点.

更新的C#基准代码的结果:

00:00:51.7390000 for isIntegerParseInt
00:00:03.9110000 for isIntegerRegex
00:00:00.3500000 for isIntegerTryParse
Run Code Online (Sandbox Code Playgroud)

使用:

static bool isIntegerParseInt(string str) {
    try {
        int.Parse(str);
        return true;
    } catch (FormatException e){}
    return false;
}

static bool isIntegerRegex(string str) {
    return Regex.Match(str, "^-?[0-9]+(\\.[0-9]+)?$").Success;
}

static bool isIntegerTryParse(string str) {
    int bob;
    return Int32.TryParse(str, out bob); …
Run Code Online (Sandbox Code Playgroud)

c# performance

18
推荐指数
1
解决办法
7万
查看次数

如何将字符串转换为float并避免在java中使用try/catch?

有一些情况我需要将字符串转换为浮点数或其他一些数值数据类型,但有可能获得一些不可转换的值,如" - "或"/",我无法预先验证所有值以删除他们.我想避免使用try/catch这个问题,还有其他方法在java中进行正确的转换吗?类似于C#的东西TryParse

java floating-point try-catch

9
推荐指数
2
解决办法
8425
查看次数

Javascript正则表达式仅用于整数,不以0开头但允许0

我需要一个正则表达式来验证整数.05 and 00不允许但0允许.目前我有这个:

/^[1-9]\d*$/
Run Code Online (Sandbox Code Playgroud)

但它不允许0.感谢帮助.

javascript regex

6
推荐指数
2
解决办法
7133
查看次数

如何使用默认值将String解析为int?

我需要将字符串用户id解析为我使用的整数Integer.parseInt(String s)但它返回null/nil,如果有字符串有/保持非十进制/整数值,那么我需要将默认整数值指定为0.

我试过这个,但它(? 0)似乎不起作用,我不知道它是否是正确的语法.

String userid = "user001";
int int_userid = Integer.parseInt(userid) ? 0;
Run Code Online (Sandbox Code Playgroud)

如果存在空赋值,如何将默认值赋给整数?

字符串userid是一个参数参数,作为Web服务函数调用的一部分,因此我无法将其数据类型更新为整数.

java string integer default-value parseint

4
推荐指数
4
解决办法
7923
查看次数

要检查是否可以将字符串解析为Integer?

我想检查是否String传递给Integer.valueOf(String s)要解析的有效String.如果一个不可解析,我需要返回0.

我是通过以下方式完成的:

try{
    Integer.valueOf(String s)
} catch(NumberFormatException e) {
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这样做是不好的方法吗?

java string integer

3
推荐指数
2
解决办法
5452
查看次数