2

以下是我可能会收到的一些输入示例

1,4
34,2
-99,20

等等

因此包含负值,并且可能有 1、2、3 等数字。逗号不是唯一的分隔符,只是一个示例。但是非整数值是 parseInt 不起作用的原因。我可以编写什么代码来解析上述 3 个输入以便得到这个?

1
34
-99
4

6 回答 6

3

您可以使用正则表达式 (regex)。

一个用逗号分隔的简单示例:

String[] values = string.split(",")
for (String a : values) {
    Integer.parseInt(a);
}
于 2012-02-07T17:31:00.397 回答
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
于 2012-02-07T17:31:48.637 回答
1

这是一个非常开放的问题...我建议您首先检查您的字符串,并正确格式化所有数字,用所有逗号替换点...然后您需要拆分它,然后您需要解析每个值.

对于每个步骤,您都可以通过谷歌搜索找到很多帮助。

IE。

  • 步骤 1. 字符串替换 java
  • 步骤 2. 字符串拆分 java
  • 步骤 3. 字符串到 int java
于 2012-02-07T17:30:29.280 回答
1

您可以用空字符串替换除数字以外的所有字符,然后执行 parseInt

String intStr = inputStr.replaceAll("[^0-9]+","");
int i = Integer.parseInt(intStr);
于 2012-02-07T17:30:37.033 回答
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]);
}
于 2012-02-07T17:32:21.023 回答
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");
    }
}
于 2012-02-07T18:05:02.040 回答