Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.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 在何处/如何在循环中创建新对象_Java_Loops_Object - Fatal编程技术网

Java 在何处/如何在循环中创建新对象

Java 在何处/如何在循环中创建新对象,java,loops,object,Java,Loops,Object,假设我有一个文本文件,我在其中的每一行循环。文本文件行如下所示: 1 2 3 4 1 2 3 4 1 2 3 4 我还有一个名为DataHolder的类,我希望每个段都有一个新的实例(其中一个段是第1、2、3、4行)。DataHolder类有1、2、3和4的变量。当迭代器点击空白时,应为下一个1234创建DataHolder类的新对象 我怎样才能做到这一点?这就是我现在所拥有的 File theFile = new File(pathToFile); try { Scanner f

假设我有一个文本文件,我在其中的每一行循环。文本文件行如下所示:

1
2
3
4

1
2
3
4

1
2
3
4
我还有一个名为DataHolder的类,我希望每个段都有一个新的实例(其中一个段是第1、2、3、4行)。DataHolder类有1、2、3和4的变量。当迭代器点击空白时,应为下一个1234创建DataHolder类的新对象

我怎样才能做到这一点?这就是我现在所拥有的

File theFile = new File(pathToFile);
try
{
    Scanner fileContent = new Scanner(theFile);
    DataHolder data = new DataHolder();
    while(fileContent.hasNextLine())
    {
        String line = fileContent.nextLine();
        if(line == "")
        {

        }
    }  
}
catch(Exception e)
{
    // ToDo
}
这:

不正确,因为您正在比较引用。你应该使用

if(line.equals(""))
然后您可以可靠地比较字符串,然后通过以下方式重新初始化循环中的DataHolder对象:

if(line.equals("")) {
   data = new DataHolder();
}
假设您需要存储一组数据持有者,在这种情况下,您可以将其添加到此处的集合中。也许还可以研究
String.trim()
,这样多个空格就不会中断您的解析。

这:

File theFile = new File(pathToFile);
try
{
    Scanner fileContent = new Scanner(theFile);
    List<DataHolder> dataList = new ArrayList<DataHolder>();
    List<String> stringList = new ArrayList<String>();
    while(fileContent.hasNextLine())
    {
        stringList.add(fileContent.nextLine());
        if(line.equals(""))
        {
            if (!stringList.isEmpty())
            dataList.add(new DataHolder(stringList));
            stringList.clear();

        }
    }  
}
catch(Exception e)
{
    // ToDo
}
不正确,因为您正在比较引用。你应该使用

if(line.equals(""))
然后您可以可靠地比较字符串,然后通过以下方式重新初始化循环中的DataHolder对象:

if(line.equals("")) {
   data = new DataHolder();
}
假设您需要存储一组数据持有者,在这种情况下,您可以将其添加到此处的集合中。也许还可以研究
String.trim()
,这样多个空格就不会中断您的解析。

File theFile=new File(pathToFile);
File theFile = new File(pathToFile);
try
{
    Scanner fileContent = new Scanner(theFile);
    List<DataHolder> dataList = new ArrayList<DataHolder>();
    List<String> stringList = new ArrayList<String>();
    while(fileContent.hasNextLine())
    {
        stringList.add(fileContent.nextLine());
        if(line.equals(""))
        {
            if (!stringList.isEmpty())
            dataList.add(new DataHolder(stringList));
            stringList.clear();

        }
    }  
}
catch(Exception e)
{
    // ToDo
}
尝试 { 扫描仪文件内容=新扫描仪(文件); List dataList=new ArrayList(); List stringList=新建ArrayList(); while(fileContent.hasNextLine()) { 添加(fileContent.nextLine()); if(第行等于(“”) { 如果(!stringList.isEmpty()) 添加(新数据持有者(stringList)); stringList.clear(); } } } 捕获(例外e) { //待办事项 }
File theFile=新文件(pathtfile);
尝试
{
扫描仪文件内容=新扫描仪(文件);
List dataList=new ArrayList();
List stringList=新建ArrayList();
while(fileContent.hasNextLine())
{
添加(fileContent.nextLine());
if(第行等于(“”)
{
如果(!stringList.isEmpty())
添加(新数据持有者(stringList));
stringList.clear();
}
}  
}
捕获(例外e)
{
//待办事项
}

阅读每一行。如果值不为空,请将值存储到列表中。当您点击空白处时,创建从列表中提取值的数据持有者。然后清除列表并重复
newdataholder()
实例化一个新对象。您可以在循环内部和外部执行这样的操作。当然,您需要对新实例做一些事情(将其分配给一个变量,将其放入一个集合中,…)以使其发挥任何作用。如果值不为空,请将值存储到列表中。当您点击空白处时,创建从列表中提取值的数据持有者。然后清除列表并重复
newdataholder()
实例化一个新对象。您可以在循环内部和外部执行这样的操作。当然,您需要对新实例做一些事情(将其分配给一个变量,将其放入一个集合中,…)以使其发挥任何作用。这并没有设置DataHolder中的变量It’s not’s required(尽管代码中缺少该部分),这似乎就是他们所要求的:
DataHolder类有1234的变量。
然后应该为下一个1234创建
DataHolder类。
这只提供了部分答案。这并没有设置DataHolder中的变量It’s not what's required(尽管代码中缺少该部分),这似乎就是他们所问的:
DataHolder类有1234的变量。
然后应该为下一个1234创建
DataHolder类。
虽然Brian的答案很好,这是完整的代码段。只需一个小注释,您就可以关闭资源。虽然Brian的回答很好,但这是完整的代码段。只需一个小注释,您就可以关闭资源。