2011-12-30 4 views
1

У меня есть такой код:Java изменить тип элемента в массиве

public class Main{ 
    public static void main(String args[]) { 
    String s="null, arco, baleno"; 
    Object[] arr=s.split("\\,"); 
    for (int i=0; i<arr.length; i++) 
    { 
     System.out.println(arr[i]); 
    } 
    } 
} 

Мне нужна возможность изменить тип обр [0] или другие элементы из строки в целое или другие типов, как я могу сделать это ?

благодарит заранее. ciao h.

+0

Вы хотите сохранить новые данные в том же массиве? или вы хотите поместить его в новый массив? – luketorjussen

ответ

2

Вы не можете. Java-массивы хранят элементы одного типа.

Это непохоже то есть списки питона, где вы можете сделать

l = ['a',2, 3.0] 

В Java, вам придется создать другой массив типа вам нужно, и преобразовать каждый элемент вашего массива соответственно, т.е. путем анализа его.

2

попробовать с этим

Integer.parseInt(arr[i]); 

присвоить его новый целочисленный массив как

newArray[i] = Integer.parseInt(arr[i]); 

newArray является целочисленным массивом

+0

Выражение 'Integer.parseInt (arr [i]);' не будет работать, потому что метод 'parseInt()' не принимает значение типа Object, как this: Integer.parseInt (Object); '. Обратите внимание, что тип 'arr []' is 'Object', который вы поставляете в качестве параметра' parseInt() ', который вызывает ошибку времени компиляции. – Lion

+0

Да, это право, мы можем преобразовать объект в строку, используя метод toString(), поэтому можем изменить выше конвертирование, как this newArray [i] = Integer.parseInt (arr [i] .toString()); –

2

Вы можете изменить из строки в целом по-разному следующим образом.

Integer.parseInt(arr[i].toString()); 
Integer.valueOf(arr[i].toString()).intValue(); 
Integer temp=new Integer(arr[i].toString()); 

Вы можете разобрать элементы arr[] в int и хранить в другой массив следующим образом.

public class Main 
{ 
    public static void main(String args[]) 
    { 
     String s="1,2,3"; 
     Object[] arr=s.split("\\,"); 
     int temp[]=new int[arr.length]; 

     for(int i=0; i<arr.length; i++) 
     { 
      temp[i]=Integer.parseInt(arr[i].toString()); 
      System.out.println(temp[i]); 
     } 
    } 
} 

Вы можете преобразовать тип данных в другой тип данных следующим образом (с использованием авто-боксом и методов распаковки).

Float f=new Float(arr[0].toString()); 
    f=Float.parseFloat(arr[0].toString()); 
    f=Float.valueOf(arr[0].toString()).floatValue(); 

    Double d=new Double(arr[0].toString()); 
    d=Double.parseDouble(arr[0].toString()); 
    d=Double.valueOf(arr[0].toString()).doubleValue(); 

    Long l=new Long(arr[0].toString()); 
    l=Long.parseLong(arr[0].toString()); 
    l=Long.valueOf(arr[0].toString()).longValue(); 

    Byte b=new Byte(arr[0].toString()).byteValue(); 
    b=Byte.parseByte(arr[0].toString()); 
    b=Byte.valueOf(arr[0].toString()).byteValue(); 

    Short sh=new Short(arr[0].toString()); 
    sh=Short.parseShort(arr[0].toString()); 
    sh=Short.valueOf(arr[0].toString()).shortValue(); 

    String str=String.valueOf(arr[0]).toString(); 

    Boolean bool=true; 
    String boolStr=bool.toString(); 

    boolean boolPri=false; 
    boolStr=String.valueOf(boolPri); 
+0

Спасибо за ваши хорошие примеры! – haltman

Смежные вопросы