John
John

Reputation: 37

String cannot be converted to array

I have a program that reads in a file using a filename specified by the user. All file contents must be read and stored in the array. I seem to have done the IO Correctly besides this error. I understand what the error is but not sure how to correct.

EDIT: The array is already defined in the file.

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

animals[ j ] = bufferedReader.readLine();

Here is my code for the readFile Submodule:

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();
    }
}

Thanks for the help.

Upvotes: 0

Views: 1043

Answers (2)

SedJ601
SedJ601

Reputation: 13857

Lots of problems in your code. Starting with the method's input. Also reading from file.

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;
    }

Upvotes: 1

animals is array of Animals, but bufferedReader.readLine() reads line. You should convert it to Animal. I don't see definition of your class Animals, but, I think, there should be constructor that takes String as argument.

So, If i'm right, you should basically write:

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

Upvotes: 1

Related Questions