Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 向ArrayList中添加值_Java - Fatal编程技术网

Java 向ArrayList中添加值

Java 向ArrayList中添加值,java,Java,我正在创建一个程序,用于对文件读入的名称列表进行排序。我遇到的问题是,老师希望我们打开一个文件并将所有值(每行都是一个值)添加到ArrayList中。将文件中的所有值添加到ArrayList中是很容易的,但是教师要求它的类型为Name,这是包中的一个单独的类。我需要在我的名字类中包含什么才能使以下代码正常工作- String line = null; ArrayList<Name> nameAL = new ArrayList<>(); try {

我正在创建一个程序,用于对文件读入的名称列表进行排序。我遇到的问题是,老师希望我们打开一个文件并将所有值(每行都是一个值)添加到ArrayList中。将文件中的所有值添加到ArrayList中是很容易的,但是教师要求它的类型为Name,这是包中的一个单独的类。我需要在我的名字类中包含什么才能使以下代码正常工作-

String line = null;
    ArrayList<Name> nameAL = new ArrayList<>();
     try {
        FileReader fileReader = 
            new FileReader(fileName);

        BufferedReader bufferedReader = 
            new BufferedReader(fileReader);

        while((line = bufferedReader.readLine()) != null) {
            nameAL.add(line);
        }   
        bufferedReader.close();
        if (nameAL.size() <= 0)
        {
            JOptionPane.showMessageDialog(null, "File invalid", "Input Error",
                JOptionPane.ERROR_MESSAGE);
            System.out.println("File must have at least one element");
        }               

    }
    catch(FileNotFoundException ex) {
        System.out.println(
            "Unable to open file '" + 
            fileName + "'");                
    }
    catch(IOException ex) {
        System.out.println(
            "Error reading file, must have at least one element '" 
            + fileName + "'");                  
    }
    return nameAL;
}
字符串行=null;
ArrayList name=新的ArrayList();
试一试{
文件读取器文件读取器=
新文件阅读器(文件名);
BufferedReader BufferedReader=
新的BufferedReader(文件阅读器);
而((line=bufferedReader.readLine())!=null){
名称.添加(行);
}   
bufferedReader.close();

如果(nameAL.size()
ArrayList
表示列表应包含Name的实例。您需要在Name类中接受一个字符串参数,并将其实例化存储在ArrayList中。

查看Name类的构造函数。然后修复此行:

nameAL.add(line);
进入


您应该将您的行作为名称实例添加到
ArrayList nameAL

我不确定是否正确理解了您的问题。名称类类似于

public Class Name{
    private String name;

    public Name(String name){
        this.name = name;
    }

    ...getters and setters....
}
当添加新行(我假设是一个名称)时


基本上,当您这样做时: readLine()您将获得一个字符串值

您需要将该字符串值转换为名称类

您只需使用名称构造函数创建一个新的名称实例,该构造函数将读取字符串值,如下所示:

while((line = bufferedReader.readLine()) != null) {
  nameAL.add(new Name(line));
} 
while((line = bufferedReader.readLine()) != null) {
    nameAL.add(new Name(line)); // this called anonymous Object of class
} 
在当前包中创建名称类,如下所示

class Name{
private String name;

 public void setName(String name){
   this.name = name;
 }

 public String getName(){
   return name;
 }
}
并在循环中更改以下代码

while((line = bufferedReader.readLine()) != null) {
        Name name = new Name();
        name.setName(line);
        nameAL.add(name);
    }  

假设您有这样一个类
名称
(例如):

现在,您可以通过为每一行创建一个新的
Name
对象来添加每次读取的行,如下所示:

while((line = bufferedReader.readLine()) != null) {
  nameAL.add(new Name(line));
} 
while((line = bufferedReader.readLine()) != null) {
    nameAL.add(new Name(line)); // this called anonymous Object of class
} 
然后您可以像这样从
ArrayList
读回这些行(例如):


你能更具体地回答你的问题吗?听起来你需要导入你的
Name
类。
import package.path.to.Name
位于你想要使用它的文件顶部。导入是不必要的,因为它在同一个包中,我从Name.add(line)行中得到的错误是字符串“line”无法转换为名称您无法将行添加到
名称
类型的
数组列表
,而是需要在读取文件时为每行动态创建一个
名称
对象,并使用setter方法(应在Name类中)将行添加到
名称
类中的字符串字段(假设您已经有了它)您需要调用类的构造函数
Name
…示例:
nameAll(新名称(行));
…这里,我假设您的Name类有一个签名如下的构造函数:
public Name(字符串值)
while((line = bufferedReader.readLine()) != null) {
    nameAL.add(new Name(line)); // this called anonymous Object of class
} 
for(Name name : nameAL){
    System.out.println(name.getName);
}