【问题标题】:Reading different types of data from a file从文件中读取不同类型的数据
【发布时间】:2015-05-24 19:59:31
【问题描述】:

所以对于一个作业,我必须获取一个看起来像这样的文件:

2141512   
Math
68

7493674
History
82

8403785
English
23

4213432
French
75

7556463
Science
97

2345215
ICS
49

较长的数字是学生编号,2 位数字是组成的分数,我需要一个程序来读取文件并创建另外 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);
    }
  }
}             

【问题讨论】:

  • Java 中的扫描器类可以进行文件读取,它有可以读取的 Double,int,string。

标签: java algorithm file loops


【解决方案1】:

Scanner 与其next()nextInt() 方法一起使用。

Usage example 与你所拥有的类似。

【讨论】:

  • @Ryan 好吧,这不是最好的建议,因为BufferedReader 更底层,它只能读取单个字符或整行,不如Scanner 中的方便你的情况。试试看,你会看到的。
  • @AdamStelmaszczyk 这是一个家庭作业,我猜他在那里别无选择:P
【解决方案2】:

您在使用 Java File API 的道路上是正确的,您需要做的就是对您的代码进行一些调整。

  1. 不要将字符串与== 进行比较,而是使用line.equals("English")
  2. 如果使用&amp;&amp;,则首先需要替换所有||

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

  4. 您需要在每个 while 语句之后删除 ;。 (否则这些是无限循环)

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

【讨论】:

  • Integer.parseInt(line)Integer.valueOf(line).intValue(); 相同
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-14
  • 1970-01-01
  • 1970-01-01
  • 2021-09-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多