需要数组,但找到了ArrayList

我有一个ruby背景和我新的java我写了一个基本的程序,但不知怎的,我得到一个错误,我无法修复! 我的代码:

import java.util.ArrayList; public class Music { private ArrayList 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(); } 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"); } } 

当我尝试编译它时,我得到了某种错误:我错了什么? 谢谢!

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

您需要使用get()方法从ArrayList获取特定索引处的元素。 您不能使用[]在arraylist中的特定索引处获取元素。 它只适用于数组,您的files不是数组,而是ArrayList。

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

此外,你的for循环中的条件有点偏。 files.size() <= ifalse ,因此它根本不进入for循环。

把它改成这样的东西。

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

您无法像数组一样访问arraylist,您必须使用方法get(index)才能获得第i个元素。

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

改变这个

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

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

如果你需要索引

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

files [i]用于数组。 使用列表时,您需要使用索引。 尝试files.get(i)

嘿问题出在这种方法中

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

准确地说,在

 files[i] 

您正在尝试访问您的ArrayList实例变量,就像它是一个数组。 只需改变它

 files.get(i) 

您必须使用ArrayList <>类中的方法get(int index)

files是一个ArrayList而不是一个Array而不是做files[i]你必须这样做 –

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

您必须使用files.get(i),因为您使用的是ArrayList而不是Array。 当你在那时使用数组时,你需要它的索引位置来从它获取值.ArrayList提供了get(i)方法来从init获取值。