如何从字符串中提取数字并将其放入ArrayList?

3

我有一个程序,希望从一个由逗号分隔的字符串中取出一组数字,并将它们放入一个 ArrayList 中;然而,我不太确定该如何做。到目前为止,我已经将字符串转换成了字符数组,并通过以下方式将字符转换成整数:

Character.digit(temp[i], 10)

以下是使用for循环迭代字符串的示例。假设在这种情况下是"1,2,3,4"。取新字符数组的第一个元素并将其转换为int。

我的问题是:

  • A: 必须有更好的方法来完成这个任务。
  • B: 如果出现两位或三位数,例如"34,2,3,65,125"会怎样?它们将作为数组的单独元素存储,而我需要将它们作为一个元素。
  • C: 如果数字是负数,那么如果这个负数是两位或三位呢?例如,"-123,45,3,4,-6"

请记住,这适用于任何String参数。

这里有很多条件,我不确定该如何解决它们。


2
这是一份作业吗?如果是,请适当标记。 - Sergey Kalinichenko
7个回答

7
考虑使用以下内容: 关于“任何字符串参数”,您有两个选择:要么在不是逗号分隔数字的情况下失败,要么重新定义任务。这就是编程的精髓所在:您需要定义一切。通常最简单(且最安全)的方法是每当您看到意外情况时都会失败。 在这种情况下,Java会为您做到这一点,所以请放心使用。

2
你可以这样做:

你只需要执行以下操作:

String input = "-12,23,123123";
String[] numbers = input.split(",");
List<Integer> result = new ArrayList<Integer>();
for(String number : numbers){
    result.add(Integer.parseInt(number));
}

2
使用String.split()函数,根据分隔符将字符串拆分为不同的子字符串:
    String input="-123,45,3,4,-6";
    String[] vals=input.split(",");

    List<Integer> numbers=new ArrayList<Integer>(vals.length);
    for(String val:vals) {
        numbers.add(Integer.valueOf(val));
    }

1
首先,使用 String.split() 分割输入的 String。然后尝试使用 Integer.parseInt()

1
String testStr = "123,456,789";
String tokens[] = testStr.split(",");

ArrayList<Integer> numList = new ArrayList<Integer>();
for(int i = 0; i < tokens.length; i++)
{     
   try
   {
      Integer num = new Integer(tokens[i]);
      numList.add(num);
   } 
   catch(NumberFormatException e)
   {  
       //handle exception
   }
}

1
String input="-123,45,3,4,-6, a";
String[] vals=input.split(",");

List<Integer> numbers=new ArrayList<Integer>(vals.length);
for(String val:vals) {
    try {
        int a = Integer.valueOf(val);
        numbers.add(a);
    } catch (NumberFormatException e) {
        // TODO: handle exception
    }
}

使用这段代码。通过使用它,您还可以避免非整数值(如果有的话)。

2
请不要捕获 Exception。谢谢。 - alf
1
如果您没有捕获异常,那么您的循环将无法遍历整个数组列表。 - Yogee
良好的实践是只捕获你知道的异常;捕获 NumberFormatException 是可以的,也是预期的。而捕获 Exception 是一种不好的实践,应该避免。 - alf
1
我已经通用地设计了这段代码。由用户决定捕获哪个异常。 - Yogee

0

你还可以使用StringTokenizer将字符串分割成子字符串,然后使用Integer.parseInt将它们转换为整数。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接