2012-02-01 4 views
0

Это то, что я до сих порTurn ArrayList в массив

try{ 
      // Open the file that is the first 
      // command line parameter 
      FileInputStream fstream = new FileInputStream("Patient.txt"); 
      // Get the object of DataInputStream 
      DataInputStream in = new DataInputStream(fstream); 
      BufferedReader br = new BufferedReader(new InputStreamReader(in)); 
      String strLine; 
      //Read File Line By Line 
      List<String> lines = new ArrayList<String>(); 
      while ((strLine = br.readLine()) != null) { 

      } 
      //Close the input stream 
      in.close(); 
      }catch (Exception e){//Catch exception if any 
      System.err.println("Error: " + e.getMessage()); 
      } 
    ArrayList<Patient1> patients=new ArrayList<Patient1>(); 
    Patient1 p = new Patient1(); 
    //set value to the patient object 
    patients.add(p); 
    System.out.println(p); 
    // File i/o 

Это мой текстовый файл

001, "John", 17, 100, 65, 110, 110, 110, 109, 111, 114, 113, "Swaying, Nausea" 
002, "Sun Min", 18, 101, 70, 113, 113, 110, 119, 111, 114, 113, "None" 
003, "Ray Allen", 25, 103, 74, 110, 110, 110, 109, 111, 108, 109, "Difficulty driving" 
004, "Michael Jordan", 26, 104, 84, 114, 115, 118, 117, 119, 120, 123, "Loss of  bladder control" 
005, "Kobe Bryant", 28, 110, 80, 118, 119, 120, 119, 120, 120, 120, "None" 

У меня есть все мои методы и ресурсы, все что мне нужно сделать, это включить в список массива в массив, так что я мог бы сделать что-то вроде

Patient1 average[] = {p[0], p[1], p[2], p[3], p[4]}; 
    int totalage = 0; 
    double totalweight = 0; 
    for (int i=0; i<average.length; i++) { 
    totalage = (average[i].getAge() + totalage); 
    totalweight = (average[i].getWeight() + totalweight); 
+0

Вы дублируя свой вопрос? [Как вы можете выбрать одну строку из текстового файла и преобразовать ее в объект массива?] [1] [1]: http://stackoverflow.com/questions/9090897/how-can-you-pick- однострочный-из-text-file-and-transform-it-in-a-array-object –

+0

Вы делаете это неправильно. Вы должны инкапсулировать свой список в коллекции и иметь методы, которые используют синтаксис for-in (или регулярный для цикла в массиве) для повторения и суммирования. Вам не нужно преобразовывать в массив. –

ответ

3

toArray является то, что вы хотите.

например.

ArrayList<String> l = something(); 
String[] foo = l.toArray(new String[foo.size()]); 

ArrayList toArray

Редактировать

Посмотрев на вашем примере немного больше. Вам не нужно преобразовывать его в массив, вы можете просто вызвать функцию get в arraylist в своем цикле и выполнить ваши вычисления. Возможно, вам захочется немного поглядеть на джавадок.

+0

Patient1 average [] = {p [0], p [1], p [2], p [3], p [4]}; не работает сейчас – user1181810

+0

Мне нужно «[]» – user1181810

+0

В вашем примере кода указано, что Patient1 p = new Patient1(); Это означает, что p не является массивом, поэтому он не работал бы в первую очередь. – Bill

-1

Используйте как этого

ArrayList<Patient1> patients = new ArrayList<Patient1>(); 
Patient1 p = new Patient1(); 
patients.add(p); 
String[] pArray = new String[patients.size()]; 
pArray = patients.toArray(pArray); 
for(String s : pArray) 
System.out.println(s); 

Надеется, что это поможет вам ..

+0

Зачем вам писать весь этот код, когда вы можете просто вызвать метод api, чтобы сделать это за вас? – Bill

+0

Это работает, но теперь мне нужно взять каждую строку и поместить в массив, такой как p [0] = ""; – user1181810

+0

Что? Вы превращаете Пациентов в массив String произвольно? Это странно. –

0

Если вы хотите прочитать файл построчно, то вы можете использовать класс FileUtils из common-io.

Использование FileUtils.readLines() мы можем прочитать содержимое файла строку за строкой и возвращает результат в виде списка строки

Пример:

File file = new File("sample.txt"); 

try { 
List<String> contents = FileUtils.readLines(file); 
for (String line : contents) { 
System.out.println(line);    
} 
} catch (IOException e) { 
e.printStackTrace();  
} 
+0

Обратитесь к этому API org.apache.commons.io.FileUtils, вы узнаете – Nithin

+0

... Или вы можете просто использовать встроенный класс сканера. http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Scanner.html Это доступно на всех Java после 5. –

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