给定一个字符串,其中包含由空格或逗号分隔的数字,如何将数字提取到数组中?需要注意的是,如果我试图在空格或逗号上分割,我不确定是否会将内容分成太多部分。
Scanner sc = Scanner.(System.IN);
String input = sc.nextLine();
double numbers[] = (double)input.split(",|\s");
input
的一个例子是
4 5 9
2,3,7
8,2 1
5, 3, 4, 5
,结果将是一个数组,其中包含分配给数组元素的每个数字。但不应允许以下内容
4,,2
,1,2,3
4,5,
然而,用户可能会输错而不输入字母(例如输入'q'而不是1),我想使用try
和catch
,但我不知道这是怎么回事看起来会.split()
返回一个数组。
答案 0 :(得分:2)
由任意数量的空格或逗号分隔,然后将每个结果字符串解析为数字:
String[] numberParts = input.split("[\\s,]+");
double[] doubles = new double[numberParts.length];
int i=0;
for (String part : numberParts) {
double value = Double.parseDouble(part);
doubles[i++] = value;
}
答案 1 :(得分:2)
如何首先替换所有非数字(分隔符除外)?最好将分隔符设为1个固定值。
你可以这样试试://replace ',' with 'space' so that you only have 1 type of separator
input=input.replaceAll(","," ").replaceAll("[a-zA-Z!@#.:;$%?|^\\&*/()+=-]+","");
double numbers[] = (double)input.split("\\s"); //or split(" ")
答案 2 :(得分:0)
不知道输入的确切内容或格式,但根据您刚才描述的内容,您必须使用split(“”)/ split(“,”)函数的组合,然后将字符串转换为double Double.parseDouble( “1234”)。
答案 3 :(得分:0)
您可以使用以下内容:
String line="1 2 3 55,56 , 8989 , 88.00 , -76.08 , -6 , +4";
String REGEX=" |,";
String res[]=line.split(REGEX);
double numbers[]=new double[res.length];
int i=0;
for(String val:res){
if(!val.isEmpty()&& val.matches("[+-]?\\d+(\\.\\d+)?"))
numbers[i++]=Double.parseDouble(val);
}
for(int j=0;j<i;j++){
System.out.println(numbers[j]);
}
<强>输出强>
1.0
2.0
3.0
55.0
56.0
8989.0
88.0
-76.08
-6.0
4.0