数组必需,但找到了ArrayList <string> </string>

时间:2013-11-19 09:39:39

标签: java

我有一个ruby backround并且我是java的新手我写了一个基本的程序但不知何故我得到一个错误我无法修复!我的代码:

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

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

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

7 个答案:

答案 0 :(得分:12)

您需要使用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++){

答案 1 :(得分:1)

你不能像数组那样访问arraylist你必须使用方法get(index)来获得第i个元素。

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

    }

答案 2 :(得分:1)

更改此

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

嘿,问题在于这个方法

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

 }

准确地说,

files[i]

您正在尝试访问ArrayList实例变量,就像它是一个Array一样。只需更改

即可
files.get(i)

您必须使用ArrayList&lt;&gt;中的方法get(int index)。类。

答案 5 :(得分:0)

文件是ArrayList而不是Array,而不是files[i]你必须这样做 -

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

答案 6 :(得分:0)

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