2016-10-29 3 views
0

Ich habe ein Programm, das eine Datei unter Verwendung eines vom Benutzer angegebenen Dateinamens einliest. Alle Dateiinhalte müssen gelesen und im Array gespeichert werden. Ich habe die IO neben diesem Fehler korrekt gemacht. Ich verstehe, was der Fehler ist, aber nicht sicher, wie zu korrigieren ist.String kann nicht in Array konvertiert werden

BEARBEITEN: Das Array ist bereits in der Datei definiert.

Zoo.java:284: error: incompatible types: String cannot be converted to Animals

animals[ j ] = bufferedReader.readLine(); 

Hier ist mein Code für das Submodul readfile:

public String readFile(Animals[] animals)                  
{                            
    Scanner sc = new Scanner(System.in);                  
    String nameOfFile, stringLine;                   
    FileInputStream fileStream = null;                  
    BufferedReader bufferedReader;                   
    InputStreamReader reader;                     
    System.out.println("Please enter the filename to be read from.");           
    nameOfFile = sc.nextLine();                    
    try                          
    {                           
     constructed = true;                     
     fileStream = new FileInputStream(nameOfFile);               
     bufferedReader = new BufferedReader(new InputStreamReader(fileStream));        
     while((stringLine = bufferedReader.readLine()) != null)            
     {                          
      for(int j = 0; j < animals.length; j++)               
      {                         
       animals[j] = bufferedReader.readLine();              
      }                         
     }                          
     fileStream.close();                     
    }                           
    catch(IOException e)                      
    { 
     if(fileStream != null) 
     { 
      try 
      { 
       fileStream.close(); 
      } 
      catch(IOException ex2) 
      { 

      } 
     } 
     System.out.println("Error in file processing: " + e.getMessage(); 
    } 
} 

Danke für die Hilfe.

+0

Wo ist das Array animals [] definiert? Sie müssen ein neues Objekt Ihrer Animal-Klasse erstellen, um das Array auszufüllen. 'tier [j] = neues Tier (Ihre Linie);' –

+0

Das Array Animals [] ist bereits in der gleichen Datei definiert. – John

+0

Verwenden Sie alle Zeilen als Zeichenfolge oder verwenden Sie einen String-Builder. Als nächstes erstellen Sie Ihr Array mit der Länge der Zeichenfolge oder des Stringbuilders. Zuletzt verwenden Sie eine for-Schleife mit string/stringbuilder. Length und chaAt (i) – Sedrick

Antwort

1

animals ist Array von Animals, aber bufferedReader.readLine() liest Zeile. Sie sollten es in Animal konvertieren. Ich sehe keine Definition Ihrer Klasse Animals, aber ich denke, es sollte Konstruktor sein, der String als Argument verwendet.

Also, wenn ich mich nicht irre, dann sollten Sie grundsätzlich schreiben:

animals[j] = new Animals(bufferedReader.readLine());  
1

Viele Probleme in Ihrem Code. Beginnend mit der Eingabe der Methode. Auch aus der Datei lesen.

public static void main(String[] args) { 
     // TODO code application logic here 
     for(String entry : readFile()) 
     { 
      System.out.println(entry); 
     } 
    } 

    static public String[] readFile()                  
    {                            
     Scanner sc = new Scanner(System.in);                 

     InputStreamReader reader;                     
     System.out.println("Please enter the filename to be read from.");           
     String nameOfFile = sc.nextLine();                   
     try(BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(new FileInputStream(nameOfFile)));)                          
     {                           
      //constructed = true; why?                  

      String stringLine; 

      ArrayList<String> arraylist = new ArrayList(); 
      while((stringLine = bufferedReader.readLine()) != null)            
      {                        
       arraylist.add(stringLine);              
      }  
      return arraylist.toArray(new String[0]); 
     } 
     catch (FileNotFoundException ex) 
     {                         
      Logger.getLogger(Filetoarray.class.getName()).log(Level.SEVERE, null, ex); 
     } 
     catch (IOException ex) 
     { 
      Logger.getLogger(Filetoarray.class.getName()).log(Level.SEVERE, null, ex); 
     }                         
     return null; 
    } 
Verwandte Themen