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

Я пытаюсь построить гистограмму, которая читает набор из примерно 200 сотен чисел, сохраненных в файле .txt, после того, как я отправляю его имя через сканер. После этого я хотел бы напечатать одну звездочку для каждого введенного значения.

Вот этот файл: https://gofile.io/?c=4kfTrW

Я обнаружил, что для чтения файлов в программе мне нужноиспользовать java.io. Теперь я посмотрел документацию, и мне сказали импортировать FileNotFoundException, что я на самом деле не понял, почему.

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class Class83 {
    public static void main(String[] args) throws FileNotFoundException {

        int[] data = new int[200];
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter file's filepath: ");

        /*reading filename*/
        String fileName = sc.nextLine();
        int index = 0;

        /*Reading file*/
        File file = new File(fileName);
        Scanner inputFile = new Scanner(file);
        try {
            /*Going through each element*/
            while (inputFile.hasNext()) {
                if (inputFile.hasNextInt()) {
                    /*Storing numbers read from text into array*/
                    data[index] = inputFile.nextInt();
                    index++;
                } else {
                    inputFile.next();
                }
            }
        } finally {
            /*Closing file*/
            inputFile.close();
        }

        String[] Stars = {" 1-10 |", "11- 20 | ", "21- 30 | ", "31- 40 | ", "41- 50 | ",
            "51- 60 | ", "61- 70 | ", "71- 80 | ", "81- 90 | ", "91-100 | "};

        /*Going through array values*/
        for (int i = 0; i < index; i++) {
            int num = data[i];
            if (num < 11) {
                Stars[0] += "*";
            } else if (num < 21) {
                Stars[1] += "*";
            } else if (num < 31) {
                Stars[2] += "*";
            } else if (num < 41) {
                Stars[3] += "*";
            } else if (num < 51) {
                Stars[4] += "*";
            } else if (num < 61) {
                Stars[5] += "*";
            } else if (num < 71) {
                Stars[6] += "*";
            } else if (num < 81) {
                Stars[7] += "*";
            } else if (num < 91) {
                Stars[8] += "*";
            } else {
                Stars[9] += "*";
            }
        }

        /*Finally printing the results*/
        for (int i = 0; i < 10; i++) {
            System.out.println(Stars[i]);
        }
    }
}

Ожидаемый результат должен быть примерно таким: https://imgur.com/a/mes6B4c, но этона самом деле выдает ошибку:

Exception in thread "main" java.io.FileNotFoundException: Random_Int.txt (The system cannot find the file specified)
    at java.io.FileInputStream.open0(Native Method)
    at java.io.FileInputStream.open(FileInputStream.java:195)
    at java.io.FileInputStream.<init>(FileInputStream.java:138)
    at java.util.Scanner.<init>(Scanner.java:611)
    at Class83.main(Class83.java:27)
C:\Users\KevinUriel\AppData\Local\NetBeans\Cache\8.2\executor-snippets\run.xml:53: Java returned: 1
BUILD FAILED (total time: 32 seconds)

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

ОБНОВЛЕНИЕ:

В настоящее время он печатает упомянутую ошибку, когда я просто набираю ее имя, скажем,Random_Int.txt;когда я помещаю весь путь к файлу, он просто печатает следующее:

 1-10 |
11- 20 | 
21- 30 | 
31- 40 | 
41- 50 | 
51- 60 | 
61- 70 | 
71- 80 | 
81- 90 | 
91-100 |

Он даже не печатает звезды: /

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