需要数组,但找到了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() <= i
是false
,因此它根本不进入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获取值。