Как я могу получить число, полученное из буферизованного файла читателя? - PullRequest
1 голос
/ 30 апреля 2019

Мне нужно получить номер из textFile, используя BufferedReader.Когда я получаю его, число кодируется в ASCII, и я не могу преобразовать его в целое число.

Это упражнение для классного упражнения.Упражнение: Создайте текстовый файл в папке с записной книжкой Windows.Этот файл будет содержать целые числа, по одному на каждую строку.Создайте программу на Java, которая читает предыдущий файл данных и показывает нам на экране среднее значение, максимальное значение и минимальное значение.Пользователь укажет название файла.

char valor;
fs = new FileReader(path+filename);
bf = new BufferedReader(fs)

//THE TEXTFILE CONTAINS INT NUMBERS, FIRST OF THEM IS NUMER 3
valor = (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 SHOWS
System.out.print((int)valor);   //CONSOLE:     51

Ответы [ 2 ]

1 голос
/ 30 апреля 2019

Это происходит потому, что индекс в таблице ASCII символа '3' равен 51 ( таблица ASCII ).Вам нужно разобрать его:

int value = Character.getNumericValue(valor);

или вычесть ASCII-код '0' (48)

int value = valor - '0';
0 голосов
/ 30 апреля 2019

Один из подходов заключается в использовании конструктора из класса 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...