【问题标题】:Can you help, is there something wrong in my code你能帮忙吗,我的代码有问题吗
【发布时间】:2014-03-01 08:07:24
【问题描述】:

我有一个主类,然后当我划分每个元素(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);
    }
}

【问题讨论】:

  • 我的意思是,A) 你的代码不像你说的应该做的那样,B) 它告诉你到底是什么问题;您正在尝试将 String 添加到 List&lt;String[]&gt;
  • 不清楚 Student 在这里。它应该是 ProjectWork 的内部类吗?还是在别处申报进口?无论哪种方式, public static void Student(...) 行都没有意义。您也没有在学生变量上使用私有。

标签: java list class arraylist


【解决方案1】:

因为,看到这一行:

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

它接受字符串数组,而您只添加这样的字符串:

students.add(id);

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

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

或使用add 方法添加“字符串”数组。

【讨论】:

    【解决方案2】:

    您已声明您的收藏,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 应该是一个类吗?

    【讨论】:

      【解决方案3】:

      您正在尝试将字符串对象添加到列表中,请更改此设置,因为您没有添加三个字符串类型的数组:

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

      【讨论】:

        【解决方案4】:

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

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

        方法应该是这样的:

        public static void Student(String id, String name, String surname, String[] midterms) throws IndexOutOfBoundsException {
        //List students = new ArrayList();
        List 学生 = new ArrayList();
        学生.add(id);
        student.add(name);
        student.add(姓氏);
        }

        【讨论】:

          猜你喜欢
          • 2017-09-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-11-27
          • 2021-02-04
          相关资源
          最近更新 更多