2015-05-24 30 views
1

因此,对于一个任务,我必须得接受一个看起来像一个文件:阅读不同类型的数据从文件

2141512 
Math 
68 

7493674 
History 
82 

8403785 
English 
23 

4213432 
French 
75 

7556463 
Science 
97 

2345215 
ICS 
49 

较长的数字是学生人数和2位数字的由马克,我需要一个读取文件并创建另外两个文件的程序。一个显示如何传递的主题和标记(pass.txt),一个显示谁失败了他们的类(fail.txt)。到目前为止,我已经这样做了,但是我不知道如果我应该将它全部读为字符串并将标记转换为整数,并且我不知道如何将行读作不同的数据类型。

import java.io.*; 

public class WriteKONG 
{ 
public static void main(String[] args) throws IOException 
{ 
    BufferedReader in; 
    in = new BufferedReader(new InputStreamReader(System.in)); 
     String line; 
     int i; 

    PrintWriter fail; 
    PrintWriter pass; 
    fail = new PrintWriter(new FileWriter("fail.txt")); 
    pass = new PrintWriter(new FileWriter("pass.txt")); 
    in = new BufferedReader(new FileReader("marks.txt")); 
    line = in.readLine(); 
    i = Integer.valueOf(line).intValue(); 
    while (line != null); 
    { 
    if (line != "English" || line != "Math" || line != "Science" || line != "ICS" || line != "History" || line != "French") 
     do { i = Integer.valueOf(line).intValue(); 
     pass.println(); 

     i = Integer.valueOf(line).intValue(); 
     while(line <= 50 || line < 101); 
     i = Integer.valueOf(line).intValue(); 
     if (line >= 49){ 
     fail.println(); 
     } 
     i = Integer.valueOf(line).intValue(); 
     if (line >= 50 || line < 101){ 
     pass.println();i = Integer.valueOf(line).intValue(); 

     } 

    } 
     while (line != null); 
    } 
    } 
}    
+0

Java中的扫描器类可以进行文件读取,它具有Double,int,它可以读取的字符串。 – Asura

回答

0

使用Scannernext()nextInt()方法。

Usage example与您拥有的相似。

+0

我被告知要使用缓冲读取器 – Ryan

+0

@Ryan Well,这不是最好的建议,因为'BufferedReader'更低级,它只能读取单个字符或整行,这不像'Scanner'那样方便你的情况。试试看,你会看到。 –

+0

@AdamStelmaszczyk它的功课,我猜他没有选择:P – TheUknown

0

您正在使用Java File API的正确途径,您只需对代码进行一些调整即可。

  1. 没有琴弦与==比较改用line.equals("English")
  2. 需要更换所有||在第一如果与&&

  3. 你需要使用Integer.parseInt(line)

  4. 你需要删除每隔一段时间陈述后都会有;。 (否则这些是无限循环)

我希望这可以帮助,试图调试你的逻辑。

+0

'Integer.parseInt(line)'与'Integer.valueOf(line).intValue();' – TheUknown