我通常使用以下习惯来检查String是否可以转换为整数.
public boolean isInteger( String input ) {
try {
Integer.parseInt( input );
return true;
}
catch( Exception e ) {
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
它只是我,还是看起来有点hackish?什么是更好的方式?
看看我的回答(基于CodingWithSpike的早期答案的基准),看看为什么我改变了我的立场并接受了Jonas Klemming对这个问题的回答.我认为这个原始代码将被大多数人使用,因为它实现起来更快,更易于维护,但是当提供非整数数据时,它会慢一个数量级.
我是java编程的新手.我的问题是我有一个字符串数组但是当我试图将它转换为一个int数组时我会继续
java.lang.NumberFormatException
Run Code Online (Sandbox Code Playgroud)
我的代码是
private void processLine(String[] strings) {
Integer[] intarray=new Integer[strings.length];
int i=0;
for(String str:strings){
intarray[i]=Integer.parseInt(str);//Exception in this line
i++;
}
}
Run Code Online (Sandbox Code Playgroud)
任何帮助都会非常感谢!!!
我试图解析标准输入并提取与特定模式匹配的每个字符串,计算每个匹配的出现次数,并按字母顺序打印结果.这个问题似乎与Streams API很匹配,但是我找不到从Matcher创建匹配流的简洁方法.
我通过在匹配项上实现迭代器并将其包装到Stream中解决了这个问题,但结果不是很易读.如何在不引入其他类的情况下创建正则表达式匹配流?
public class PatternCounter
{
static private class MatcherIterator implements Iterator<String> {
private final Matcher matcher;
public MatcherIterator(Matcher matcher) {
this.matcher = matcher;
}
public boolean hasNext() {
return matcher.find();
}
public String next() {
return matcher.group(0);
}
}
static public void main(String[] args) throws Throwable {
Pattern pattern = Pattern.compile("[a-zA-Z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+)");
new TreeMap<String, Long>(new BufferedReader(new InputStreamReader(System.in))
.lines().map(line -> {
Matcher matcher = pattern.matcher(line);
return StreamSupport.stream(
Spliterators.spliteratorUnknownSize(new MatcherIterator(matcher), Spliterator.ORDERED), false);
}).reduce(Stream.empty(), Stream::concat).collect(groupingBy(o -> o, counting()))
).forEach((k, v) -> { …Run Code Online (Sandbox Code Playgroud) 有一个输入字符串:
String str="(1,6),(2,5),(7,10),(12,20)";
Run Code Online (Sandbox Code Playgroud)
如何拆分字符串以便获得仅包含整数的整数数组?即输出数组应该是:arr={1,6,2,5,7,10,12,20};
我在java程序中有一个像这样的字符串数组
String results[] = { "2", "1", "5", "1" };
Run Code Online (Sandbox Code Playgroud)
我想将其转换为整数数组,如下所示:
int results[] = { 2, 1, 5, 1 };
Run Code Online (Sandbox Code Playgroud)
最后我想找到该int数组所有元素的总和.