array required, but ArrayList<String> found

匿名 (未验证) 提交于 2019-12-03 09:05:37

问题:

I have a ruby backround and im new to java i wrote a basic programm but somehow i get a error i cant fix! My code:

import java.util.ArrayList;  public class Music {      private ArrayList<String> files;       public static void main(String args[]){          Music a = new Music();         a.addFile("Chasen Paper");         a.addFile("Mama");         a.addFile("Hell Yes");         a.removeFile("Hell Yes");     }     public Music(){       files = new ArrayList<String>();     }      public void addFile(String filename){         files.add(filename);     }      public void returnFiles(){         for(int i = 0; files.size() <= i; i++){             System.out.println( i + ". Ist: " + files[i]);         }      }      public void removeFile(String filename){         System.out.println("Vorher gab es " + files.size() + " Dateien");         files.remove(filename);         System.out.println("Jetzt gibt es " + files.size() + " Dateien");     } } 

When i try to compile it i get somehow this error: What did i wrong? Thanks!

Music.java:26: error: array required, but ArrayList<String> found             System.out.println( i + ". Ist: " + files[i]); 

回答1:

You need to use the get() method to get the element at a particular index from an ArrayList. You can't use [] to get the element at a particular index, in an arraylist. Its possible only for arrays and your files is not an array, but an ArrayList.

System.out.println( i + ". Ist: " + files.get(i)); 

Also, the condition in your for loop is a bit off. files.size() <= i is false, and therefore, it doesn't enter the for loop at all.

Change it to something like this.

for(int i = 0; i < files.size() ; i++){ 


回答2:

You cannot access the arraylist like an array you have to use the method get(index) in order to get the i th element.

   public void returnFiles(){         for(int i = 0;i< files.size() ; i++){             System.out.println( i + ". Ist: " + files.get(i));         }      } 


回答3:

Change this

for(int i = 0; files.size() <= i; i++){     System.out.println( i + ". Ist: " + files[i]); } 

As

for(String i:files){     System.out.println(i); } 

If you need index

int index = 0; for(String i:files){         System.out.println((index++) + ".Ist: " +i);     } 


回答4:

files[i] is used for arrays. While working with lists you need to use indexing. Try files.get(i)



回答5:

Hey the problem is in this method

public void returnFiles(){         for(int i = 0; files.size() <= i; i++){             System.out.println( i + ". Ist: " + files[i]);         }   } 

Precisely, on the

files[i] 

You are trying to access your ArrayList instance variable as if it were a an Array. Just change that for

files.get(i) 

You have to use the method get(int index) from the ArrayList<> class.



回答6:

files is an ArrayList and not an Array instead of doing files[i] you must do this-

        for(int i = 0; files.size() <= i; i++){             System.out.println( i + ". Ist: " + files.get(i));         } 


回答7:

You have to use files.get(i) as your are using ArrayList and not Array. When you are using array at that time you will require its index location to fetch values from it.ArrayList provides get(i) method to fetch values from init.



易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!