Чтение цифр / целых чисел из файла в Java - PullRequest
0 голосов
/ 12 марта 2020

Я пытаюсь сосчитать все целые числа из файла, но получаю сообщение об ошибке из-за этого .toCharArray(); и .length(); оба они "не могут найти символ - метод toCharArray ()"?

public static void main(String[] args){  
        try{
            FileReader f = new FileReader(("numbers.txt")); //replace this to exact location where you store numbers.txt in computer
            Scanner input = new Scanner(f);

            char[] count = input.toCharArray();
            int num = 0;
            for (int i =0;  i<input.length(); i++){
                if(Character.isDigit(count[i])){
                    num++;
                }
                System.out.println("There are "+num+" numbers in the file.");
            }
            } catch(Exception s){
            System.out.println(s.getMessage());
        }
    } 

numbers.txt:

8 96 54 25 
104 19 
112 86 73 
16 30 112 57 
2 26 64 83 
65 
36 1 
25 
18 111 
56 104 8 36 87 

Мой ожидаемый результат выглядит так:

> There are 28 numbers in the file.

1 Ответ

0 голосов
/ 12 марта 2020

ОБНОВЛЕНИЕ

Я просто проверяю ваш входной файл. Ваш подход, который заключается в подсчете каждого ди git, абсолютно неверен. Вы должны разделить строку на массив слов на white space и проверить, является ли это слово числом.


Вы можете прочитать ваш файл по FileInputStream и обработать его построчно. Каждая строка будет разбита на слова на white space, если вы хотите считать только числа (с несколькими цифрами) или вы можете преобразовать строку в массив символов и проверить каждый символ.

Вот два класса, которые вам нужно использовать FileInputStream и BufferReader.

Пример основан на вашем коде (считая цифры)

// Open the file
FileInputStream fstream = new FileInputStream("textfile.txt");
BufferedReader br = new BufferedReader(new InputStreamReader(fstream));

String line = null;
int count = 0;
//Read File Line By Line
while ((line = br.readLine()) != null)   {
   for(Character c: line.toCharArray()) {
      //check if the c is a digit and increase count
   }
}
 //Close the input stream
 fstream.close();

//return count or print it out.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...