首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在java循环中创建新对象?

如何在java循环中创建新对象?
EN

Stack Overflow用户
提问于 2015-10-01 09:09:46
回答 3查看 6.3K关注 0票数 0

我有一个名为"info“的字符串的ArrayList,每个字符串都包含有关我的类学生会实例的信息。我尝试将Arraylist转换为数组,然后使用split方法解析它。

代码语言:javascript
运行
复制
String[] Stringinfo = new String[info.size()];
Stringinfo = info.toArray(Stringinfo);

解析完每一行后,我尝试在for循环中创建一个新对象,并将其添加到学生ArrayList中。每当我创建这个新对象--学生,以前添加到学生ArrayList中的其他对象--都被更改为这个新对象。

代码语言:javascript
运行
复制
String[] temp;
        for(int i = 1; i < LineCount + 1 ; i++)
        {
            temp = Stringinfo[i].split(" ");
            Student s = new Student(Integer.parseInt(temp[0]), Integer.parseInt(temp[1]), Integer.parseInt(temp[2]), Integer.parseInt(temp[3]), Integer.parseInt(temp[4]));
            Students.add(s);
        }

我试着在不同的地方打印学生,在创建新对象之前,一切都是正常的。在任何时候,所有对象都具有与最后创建的对象相同的属性值。

这是学生类构造函数:

代码语言:javascript
运行
复制
public Student(int certif, int class_id, int ave, int i, int a)
{
    certification_num = certif;
    class_id = class;
    average_point = ave;
    student_id = i;
    age = a;
}

我搜了很多遍,却找不到答案。很抱歉,如果答案很明显,我是刚接触Java的。任何帮助都将不胜感激。提前谢谢。

编辑:

代码语言:javascript
运行
复制
public class Student{

    public Student(){}
     public Student(int certif, int class, int ave, int i, int a)
    {
        certification_num = certif;
        class_id = class;
        average_point = ave;
        student_id = i;
        age = a;
    }


    public static int get_certification_num(){
        return certification_num;
    }

    public static int get_class_id(){
        return class_id;
    }

    public static int get_average_point(){
        return average_point;
    }

    public static int get_id(){
        return student_id;
    }

    public static int get_age(){
        return age;
    }

    private static int certification_num;
    private static int class_id;
    private static int age;
    private static int node_id;
    private static int student_id;
}
EN

Stack Overflow用户

发布于 2015-10-01 09:26:10

首先,我建议你改变你的学生班级如下:

代码语言:javascript
运行
复制
public class Student
{
  private int certification_num;
  private int class_id;
  private int average_point;
  private int student_id;
  private int age;

  public int getCertification_num() {
    return this.certification_num;
  }
  // Do this for all variables

  public void setCertification_num(int certif) {
    this.certification_num = certif;
  }
  // Do this for all variables
}

在那之后,你可以轻松地使用你的学生班级。在其他情况下,当你没有或不需要所有信息的时候。

填充您的数组:

代码语言:javascript
运行
复制
ArrayList<Student> students = new ArrayList<Student>();
for(int i = 1; i < LineCount + 1 ; i++)
{
  String[] temp;
  temp = Stringinfo[i].split(" ");
  Student s = new Student();
  s.setCertification_num(Integer.parseInt(temp[0]);
  //Do for all other fields

  Students.add(s);
}
票数 0
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32883653

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档