type mismatch cannot convert from element type object to string

29,260

Solution 1

Add notes as a global variable to your class

public class Notebook{
ArrayList<String> notes = null;

....
}

In the constructor, do:

public Notebook()
{
    notes = new ArrayList<String>();
}

Solution 2

You are having exception at this line :

 for (String item : notes)

notes is an ArrayList declared as raw type, although i don't see the declaration i can see this line of initialization:

notes = new ArrayList();

which sees it's element as of type Object You need to declare notes with ArrayList<String> type such as:

  ArrayList<String> notes = new ArrayList<>();
Share:
29,260
user202051
Author by

user202051

Updated on July 12, 2022

Comments

  • user202051
    user202051 almost 2 years

    I keep getting this error when making a search method in my code to search through string. I have gone through alot of examples trying to fix this but I cant find any. Thank you for any help and advise you can give.

    public class runNote {
    
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Notebook note = new Notebook();
        note.storeNote("happy");
        note.storeNote("hello there");
        note.storeNote("work at 5");
        note.storeNote("BBQ Time");
        note.storeNote("UNI!!!!");
        note.storeNote("Dont miss lecture at 9:15");
        System.out.println(note.numberOfNotes());
        note.showNote(1);
        note.searchNotes("hap");
    
    }}
    
    
    
    
    public class Notebook{
    
    
    /**
     * Perform any initialization that is required for the
     * notebook.
     */
    public Notebook()
    {
        notes = new ArrayList();
    }
    
    /**
     * Store a new note into the notebook.
     * @param note The note to be stored.
     */
    public void storeNote(String note)
    {
        notes.add(note);
    }
    
    /**
     * @return The number of notes currently in the notebook.
     */
    public int numberOfNotes()
    {
        return notes.size();
    }
    
    /**
     * A simple search engine to find the correct notes.
     */
    public void searchNotes(String search){ 
        for (String item : notes){
            if (item.contains(search)){
            System.out.println(item);
            }
        }
    }
    
    /**
     * Show a note.
     * @param noteNumber The number of the note to be shown.
     */
    public void showNote(int noteNumber)
    {
        if(noteNumber < 0) {
            // This is not a valid note number, so do nothing.
        }
        else if(noteNumber < numberOfNotes()) {
            // This is a valid note number, so we can print it.
            System.out.println(notes.get(noteNumber));
        }
        else {
            // This is not a valid note number, so do nothing.
        }
    }
    }
    
  • Code-Apprentice
    Code-Apprentice over 10 years
    This is a member variable, not a global one.
  • openmike
    openmike over 10 years
    That is a default constructor
  • hrv
    hrv over 10 years
    In Java 7, you don't need to specify String type with the new
  • Sage
    Sage over 10 years
    @Code-Guru, thank you, in fact complete different exception :) ;)
  • user202051
    user202051 over 10 years
    If I change the declaration I get this error: Exception in thread "main" java.lang.NullPointerException at lab8.Notebook.storeNote(Notebook.java:32) at lab8.runNote.main(runNote.java:8)
  • Sage
    Sage over 10 years
    have you initialized notes list as i described above ?