你能帮忙吗,我的代码中有什么问题吗?

时间:2014-02-05 03:22:14

标签: java list class arraylist

我有一个主类,然后当我划分每个元素(id,name,surname,...)时,我应该将它保存在名为Student的另一个类的列表中,并且还有班级学生。有一些错误,例如“方法Collection.add(String [])不适用”。那么问题是什么?

public class ProjectWork{
    public static void main(String[] args) throws IOException{
        Scanner fin = new Scanner(new File("data.txt"));
        int i;
        String str,name="",surname="",id="";
        String [] midterms = new String[3];
        while(fin.hasNextLine()){
            str = fin.nextLine();
            StringTokenizer toks = new StringTokenizer(str,"|");
            while(toks.hasMoreTokens()){
                id = toks.nextToken();
                name = toks.nextToken();
                surname = toks.nextToken();
                for(i=0;i<3;i++){
                    midterms[i] = toks.nextToken();
                }
            }
            Student(id,name,surname,midterms);
        }
    }

    public static void Student(String id, String name, String surname, String[] midterms) throws IndexOutOfBoundsException{
         private List<String[]> students = new ArrayList<String[]>();
        students.add(id);
        students.add(name);
        students.add(surname);
    }
}

4 个答案:

答案 0 :(得分:2)

因为,请看这一行:

private List<String[]> students = new ArrayList<String[]>();

它接受字符串数组,在这里只添加字符串,如下所示:

students.add(id);

所以你得到了那个错误。要么像这样声明students

private List<String> students = new ArrayList<String>();

或使用add方法添加“String”数组。

答案 1 :(得分:1)

您已宣布收集,students应该使用String数组...

List<String[]> students = new ArrayList<String[]>();

但是你正在尝试添加String元素,这不是一回事。

更改它以便添加String[]数组...

List<String[]> students = new ArrayList<String[]>();
students.add(new String[]{id,name, surname});

或重新使用String

List<String> students = new ArrayList<String>();
students.add(id);
students.add(name);
students.add(surname);

根据我的理解,您的代码正在尝试做,我认为您想要第一个。

(ps-局部变量不能用访问修饰符声明(即private),你想要摆脱它)

总的来说,你的代码没有多大意义。您正在调用static方法Student,该方法会创建一个List,向其中添加一些元素以及丢弃所有可用的方法。 Student假设是一个班级吗?

答案 2 :(得分:0)

您正在尝试将String对象添加到List,更改此项,因为您没有添加三个String类型的数组:

private List<String> students = new ArrayList<String>();

答案 3 :(得分:0)

您声明学生输入字符串数组。所以你应该在集合中添加一个数组。

要添加id,name,surname,您可以将集合类型声明为String。 即List&lt; String&gt; students = new ArrayList&lt; String&gt;();

方法应该是这样的:

public static void Student(String id,String name,String surname,String [] midterms)抛出IndexOutOfBoundsException {
        //列表与LT;字符串[] GT; students = new ArrayList&lt; String []&gt;();
        列表与LT;字符串&GT; students = new ArrayList&lt; String&gt;();
        students.add(ID);
        students.add(名称);
        students.add(姓氏);
    }