Как взять числа из строки и поместить их в arrayList - PullRequest
3 голосов
/ 02 января 2012

У меня есть программа, в которой я пытаюсь взять набор чисел из строки, разделенной запятыми, и поместить их в ArrayList;Однако я не совсем уверен, как это сделать.Пока что я сделал, превратил String в массив символов, а затем преобразовал символы в целые, используя:

Character.digit(temp[i], 10)

Этот пример находится в цикле for, повторяющемся над строкой.Допустим, в этом случае "1,2,3,4".взять первый элемент нового массива char и преобразовать его в int.

Моя проблема в том,

  • A: должен быть лучший способ сделать это.
  • B: что произойдет, если вы получите 2 или 3 цифрывместо этого, например, "34,2,3,65,125".они будут храниться как отдельные элементы массива, когда мне нужно, чтобы он был одним элементом.
  • C: что произойдет, если число будет отрицательным, а что, если это отрицательное число будет иметь длину 2 или три цифры?Например, "-123,45,3,4,-6".

Помните, что это значит для любого аргумента String.

Здесь много условий, и я не уверен, как их решить.

Ответы [ 7 ]

7 голосов
/ 02 января 2012

Рассмотрите возможность использования

Относительно «любого аргумента String»выбор: либо потерпеть неудачу в строках, которые не являются числами, разделенными запятыми, либо переопределить задачу.В этом суть программирования: вам нужно все определить.Самый простой способ (и, как правило, самый безопасный) - потерпеть неудачу, когда вы видите что-то неожиданное.В этом случае Java сделает это за вас, так что наслаждайтесь.

2 голосов
/ 02 января 2012

Используйте функцию 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));
    }
2 голосов
/ 02 января 2012

Вы могли бы просто сделать:

String input = "-12,23,123123";
String[] numbers = input.split(",");
List<Integer> result = new ArrayList<Integer>();
for(String number : numbers){
    result.add(Integer.parseInt(number));
}
1 голос
/ 02 января 2012
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
    }
}

Используйте этот код. Используя его, вы также можете избежать нецелых значений, если они есть.

1 голос
/ 02 января 2012
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 голос
/ 02 января 2012

Сначала разделите вход String, используя String.split().Тогда попробуйте Integer.parseInt().

0 голосов
/ 02 января 2012

Вы также можете использовать StringTokenizer для разбиения строки на подстроки, а затем использовать Integer.parseInt для преобразования их в целые числа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...