以下是我可能会给出的一些输入的例子
1,4
34,2
-99,20
等
因此包括负值,并且可以使用1,2,3等数字。逗号不是唯一的分隔符,只是一个例子。但非整数值是parseInt不起作用的原因。我可以编写哪些代码来解析上面的3个输入,以便我得到它?
1
34
-99
答案 0 :(得分:3)
您可以使用正则表达式(正则表达式)。
用逗号分隔的简单示例:
String[] values = string.split(",")
for (String a : values) {
Integer.parseInt(a);
}
答案 1 :(得分:2)
使用此代码:
String str = "1,4 34,2 -99,20";
String[] arr = str.split("\\D+(?<![+-])");
for (int i=0; i<arr.length; i+=2)
System.out.println(Integer.parseInt(arr[i]));
<强>输出:强>
1
34
-99
答案 2 :(得分:1)
这是一个非常开放的问题......我建议你首先查看你的字符串,并正确地格式化所有数字,用所有的逗号代替点...然后你需要拆分它,然后你需要解析每个值。
对于每一步,你都可以找到很多帮助谷歌搜索。
即
答案 3 :(得分:1)
您可以使用空字符串替换除数字之外的所有字符,然后执行parseInt
String intStr = inputStr.replaceAll("[^0-9]+","");
int i = Integer.parseInt(intStr);
答案 4 :(得分:1)
如果您只使用逗号,则可以
String numbers = "1,34,-99";
String[] splitNums = numbers.split(",");
int[] ints = null;
for(int i = 0; i < splitNums.length(); i++)
{
ints[i] = Integer.valueOf(splitNums[i]);
}
答案 5 :(得分:1)
如果您希望输入仅在有分隔符时才有效,请改用"([\\-0-9]*)[,]+.*"
。
如果您想添加其他分隔符,例如:
,添加到分隔符集,例如"([\\-0-9]*)[,|:]+.*"
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {
public static void main(String args[]) {
try {
String s1 = "-99,20";
System.out.println(getNumber(s1));
s1 = "1,4";
System.out.println(getNumber(s1));
} catch (Exception e) {
e.printStackTrace();
}
}
public static int getNumber(String s1) throws Exception {
Pattern pattern = Pattern.compile("([\\-0-9]*)[,]*.*");
Matcher m = pattern.matcher(s1);
if(m.find()) {
return Integer.parseInt(m.group(1));
}
throw new Exception("Not valid input");
}
}