Как преобразовать объект [], заполненный токенами, в массив целых чисел? - PullRequest
2 голосов
/ 17 июня 2011

Я пытаюсь написать метод, который принимает Object [], который заполнен токенами и преобразует его в массив целых чисел.

Я начал с ArrayList:

ArrayList<String> colArr = new ArrayList<String>();

затем заполнил его токенами из файла .txt:

while(st.hasMoreTokens()){
    colArr.add(st.nextToken());
}

затем преобразовал его в объект []:

Object[] newColArr = colArr.toArray();

Теперь мне нужно написать метод, который преобразует этот объект [] в целое число, чтобы я мог добавить определенные элементы вместе. Вот что я попробовал:

public static Integer[] convert(Object[] objectArray){
    Integer[] intArray = new Integer[objectArray.length];

    for(int i=0; i<objectArray.length; i++){
        intArray[i] = (Integer) objectArray[i];
    }
    return intArray;
}

но получил " Ошибка: java.lang.String не может быть приведен к java.lang.Integer ".

Ответы [ 6 ]

4 голосов
/ 17 июня 2011

используйте Integer.valueOf(objectArray[i]) вместо приведения типа (Integer)objectArray[i]

EDIT:

Чтобы уточнить, помните, что Integer.valueOf () - это просто упакованный объект вокруг Integer.parseInt () .. поэтому вы должны обработать NumberFormatException. Если вы абсолютно уверены, что ваш текстовый файл будет содержать только целые числа, вы можете просто получить массив целых чисел и выполнить Integer.valueOf (tokenizer.nextToken ())

1 голос
/ 17 июня 2011

Вы не можете выполнить тип непосредственно из java.lang.String в java.lang.Integer, это два совершенно разных объекта. Вместо этого попробуйте сделать:

Integer.parseInt(objectArray[i])

Не забудьте обработать исключение java.lang.NumberFormatException. И еще одна вещь, вам не нужно делать промежуточное преобразование в массив объектов. Если, конечно, вы не используете это для чего-то еще, что вы не упомянули. Приветствия.

1 голос
/ 17 июня 2011

переберите ваш массив строк и используйте Integer.parseInt ();

1 голос
/ 17 июня 2011

Integer.parseInt (string);работает для получения целого числа из строки

0 голосов
/ 17 июня 2011

Вы также можете использовать гуавы Lists.transform .

List<String> numberList=Lists.newArrayList("1","2","3");
    List<Integer> trnsList = Lists.transform(numberList,new Function<String,Integer>() {
    @Override
    public Integer apply(String arg0) {
        return Integer.valueOf(arg0);
     }
    });
    Integer[] intArr=trnsList.toArray(new Integer[trnsList.size()]);
0 голосов
/ 17 июня 2011

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

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