gpt4 book ai didi

java - 使用 integer.parseInt java 时出现数字格式异常

转载 作者:行者123 更新时间:2023-11-30 08:09:07 27 4
gpt4 key购买 nike

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class reader {

public static void main(String[] args) {

char rbracket=')';
char lbracket='(';
char rsbracket=']';
char lsbracket='[';
String delimiter="\\D";
String[] ar;
char start = 0,end=0;
int x[]=new int[2];
try (BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)))
{
String c=reader.readLine();
for(int i=0;i<c.length();i++)
{
if(c.charAt(i)==rbracket)start=rbracket;
else if (c.charAt(i)==rsbracket)start=rsbracket;
else if(c.charAt(i)==lbracket)end=lbracket;
else if(c.charAt(i)==lsbracket)end=lsbracket;
}
ar=c.split(delimiter);
System.out.println(start);
System.out.println(end);
for(int i=0;i<ar.length;i++)
{
x[i]=Integer.parseInt(ar[i].trim());
}

} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

}

我正在尝试读取这种格式的输入(90,100),我需要读取括号和里面的范围。检查括号是否为 ( [ 然后为 (=exclusive 中的数字和 [ 设置最小和最大范围=inclusive。我正在尝试读取大括号的字符串检查,然后将字符串拆分为数字并保存为整数字符串以供使用。

然而,在拆分后出现数字格式异常后,我无法将字符串转换为整数字符串。求助,哪里错了?

最佳答案

ar=c.split(delimiter); 行返回以下数组(对于输入 "(90,100)"):

["", "90", "100"]

所以第一个 Integer.parseInt 调用失败了。

更好的解决方案可能是使用正则表达式来解析和验证输入并提取数字:

    String c = "(90,100)";
int[] x = new int[2];
Pattern p = Pattern.compile("([(\\[])(\\d+),(\\d+)([)\\]])");
Matcher m = p.matcher(c);
if (!m.matches()) {
// input is invalid
System.out.println("Bad input string: " + c);
} else {
// input is valid
char start = m.group(1).charAt(0);
char stop = m.group(4).charAt(0);
x[0] = Integer.parseInt(m.group(2));
x[1] = Integer.parseInt(m.group(3));
for (int y : x) {
System.out.println(y);
}
}

正则表达式的解释:

  • ([(\\[]) 表示匹配 ([ 字符;外括号定义 capture group ,这是我们可以使用 m.group(1) 检索的匹配字符串的子集(1,因为它是正则表达式中的第一组)。请注意这里的第三个字符(即第二个 '(' ) 不需要用\转义,因为在 custom character class 中使用时,它不算作特殊字符。
  • (\\d+) 匹配一位或多位数字;括号定义了我们可以使用 m.group(2)
  • 检索的第二个捕获组
  • ,匹配一个逗号
  • (\\d+) 匹配一位或多位数字;括号定义了我们的第三个捕获组,我们可以使用 m.group(3)
  • 检索它
  • ([)\\]]) 匹配 )] 字符;外括号定义了我们可以使用 m.group(3)
  • 检索的第四个捕获组

关于java - 使用 integer.parseInt java 时出现数字格式异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32695595/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com