为了账号安全,请及时绑定邮箱和手机立即绑定

如何获取从缓冲阅读器文件中获得的数字?

如何获取从缓冲阅读器文件中获得的数字?

泛舟湖上清波郎朗 2022-11-02 10:53:14
我需要使用 BufferedReader 从 textFile 中获取一个数字。当我得到它时,该数字以 ASCII 编码,我无法将其转换为整数。本练习用于课堂练习。练习:在带有 Windows 笔记本的文件夹中创建一个文本文件。该文件将包含整数,每行一个。用 Java 创建一个程序,它读取先前的数据文件并在屏幕上显示我们的值、平均值、最大值和最小值。用户将指明文件的名称。char valor;fs = new FileReader(path+filename);bf = new BufferedReader(fs)//THE TEXTFILE CONTAINS INT NUMBERS, FIRST OF THEM IS NUMER 3valor = (char)bf.read(); //I NEED THIS NUMBER, WITHOUT ASCII CODED//I NEED TO USE THIS VALUE FOR CALCULATE System.out.print(valor); //CONSOLE :      3---------------------------------------------//IF I CONVERT, CONSOLE SHOWSSystem.out.print((int)valor);   //CONSOLE:     51
查看完整描述

2 回答

?
鸿蒙传说

TA贡献1865条经验 获得超7个赞

发生这种情况是因为字符“3”的 ASCII 表中的索引是 51(ASCII 表)。你需要解析它:

int value = Character.getNumericValue(valor);

或减去 '0' 的 ASCII 码 (48)

int value = valor - '0';


查看完整回答
反对 回复 2022-11-02
?
慕桂英546537

TA贡献1848条经验 获得超10个赞

一种方法是使用Integer可以接受字符串输入的类中的构造函数:


int min = Integer.MAX_VALUE;

int max = Integer.MIN_VALUE;

int sum = 0;

int cnt = 0;


try (BufferedReader br = Files.newBufferedReader(Paths.get(path+filename))) {

    String line;

    while ((line = br.readLine()) != null) {

        Integer val = new Integer(line);

        if (val < min) min = val;

        if (val > max) max = val;

        sum += val;

        ++cnt;

    }

}

catch (IOException e) {

    System.err.format("IOException: %s%n", e);

}


System.out.println("average value: " + (sum / cnt));

System.out.println("highest value: " + max);

System.out.println("smallest value: " + min);


查看完整回答
反对 回复 2022-11-02
  • 2 回答
  • 0 关注
  • 121 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信