从文本文件中读取名称/电话号码,并将其存储到Java中的数组中

时间:2018-12-07 07:22:06

标签: java arrays object java.util.scanner

该问题希望我通过读取文本文件的前四个名称并将其存储到数组中来完成代码。

这是要填写的代码。

import java.io.*;
import java.util.Scanner;


public class PersonDemo
{
  public static void main(String[] args)
  {
    File file = new File("phonedata.txt");
    Scanner infile = new Scanner(System.in);
    Person[] pArray = new Person[4];
    for(int i=0;i<4;i++)
    {
      String n = infile.nextLine();
      String p = infile.nextLine();

我应该在这里插入什么?

     }  
     infile.close();

   }
}    

正在使用的目标文件是:

public class Person
{
  private String name = "";
  private String phone ="";

public Person(String n, String p)
{
    name = n;
    phone = p;
}

public  Person()
{
    name ="";
    phone="";
}
public void setName(String n)
{
    name =n;
}
public void setPhone(String p)
{
    phone = p;
}
public String getName()
{
    return name;
}
public String getPhone()
{
    return phone;
}
public String toString()
{
    return "Name: "+name + "  Phone: " + phone;
}

}

正在使用的文本文件是:

  

奥利维亚

     

555-1111

     

蒂姆

     

555-2222

     

Theresa

     

555-3333

     

森林

     

555-4444

     

坦率

     

555-5555

     

西蒙(Simon)

     

555-6666

现在我应该如何使用目标文件将文本存储到数组中,我对代码的外观感到困惑?

2 个答案:

答案 0 :(得分:0)

欢迎堆栈溢出@tristan

String p = infile.nextline();之后,执行pArray[i] = n + " " + p

这应该使您的循环看起来像:

for(int i=0;i<4;i++)
{
  String n = infile.nextLine();
  String p = infile.nextLine();
  Person person = new Person(n, p); 
  pArray[i] = person;
}

这应该可以满足您的要求。

答案 1 :(得分:0)

您可以使用此逻辑:

for (int i = 0; i < 4; i++) {
   String name = infile.nextLine();
   infile.nextLine();               // skip a line because there is a blank line in between
   String phoneNum = infile.nextLine();
   infile.nextLine();               // here again skipping a blank line
   Person per = new Person(name, phoneNum); 
   pArray[i] = per;
} 

说明:

  1. 在这里,我们将名称电话号码存储在字符串变量name中 和phoneNum
  2. 现在,使用这些变量,我们使用来创建Person的 object 参数化的构造函数。
  3. 接下来,我们将此对象分配给数组的相应索引。

还应按照以下定义扫描仪,以通过扫描仪对象infile

读取文件
Scanner infile = new Scanner(file);