簡體   English   中英

從文本文件讀取字符串和整數輸入

[英]Reading String and Integer input from text file

我有一個使用BufferedReader閱讀的文本文件。 文本文件的格式為(字符串,字符串,整數)。 我正在使用inFile.readLine()方法讀取每一行並將其轉換為String 我認為我可以使用Integer.parse提取其中的Integer部分,但這並不是讓我使用nextLine() ,因為這是針對Scanner而不是BufferedReader

這是我所擁有的:

 try{
  String nextLine;
  String title = "";
  String department = "";
  int year;

  BufferedReader inFile = new BufferedReader(new FileReader(inputName));

  while((nextLine = inFile.readLine())!= null){

    title = nextLine.nextLine();
    department = nextLine.nextLine();
    year = Integer.parseInt(nextLine);
    newList.addCourse(new Course(title, department, year));  
  } 

  inFile.close();
  }

有人知道我應該如何讀取文本文件的String部分嗎?

最好將Scanner用於您的任務。 但是,如果標題或部門有空格,則需要指定一些定界符。

try{
    String nextLine;
    String title = "";
    String department = "";
    int year;

    BufferedReader inFile = new BufferedReader(new FileReader(inputName));
    Scanner in = new Scanner(inFile);
    while((nextLine = inFile.readLine())!= null){

        title = in.next(); //if title has spaces, you need to use next(Pattern) instead or delimiter
        department = in.next(); //if department has spaces, you need to use next(Pattern) instead or delimiter
        year = in.nextInt();
        newList.addCourse(new Course(title, department, year));
    }

    inFile.close();
} catch (FileNotFoundException e) {
    e.printStackTrace();  
} catch (IOException e) {
    e.printStackTrace(); 
}

nextLine是一個字符串,字符串沒有nextLine方法。 但是,為什么要在這種情況下在已經分配了下一行的字符串上調用nextLine?

while((nextLine = inFile.readLine())!= null)

如果您的信息總是以3行(標題,單位和年份)為一組,則可以執行以下操作:

while((nextLine = inFile.readLine())!= null){

   title = nextLine;
   department = inFile.readLine();
   year = Integer.parseInt(inFile.readLine());
   newList.addCourse(new Course(title, department, year));  
} 

但是,請確保它們始終在3行的組中,否則您將遇到異常。

最好的做法是將所有3個數據放在同一行中,並用定界符分隔,這樣您就可以簡單地執行以下操作:

String[] info;
while((nextLine = inFile.readLine()) != null)
{
    info  = nextLine.split(";");//; would be the delimiter
    title = info[0];
    department = info[1];
    year = Integer.parseInt(info[2]);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM