Почему при циклическом перемещении по текстовому документу я не могу использовать .nextInt? - PullRequest
0 голосов
/ 23 марта 2020

Итак, для школы я делаю проект, в котором нужно взять номер подтверждения, выслать номер подтверждения и сгенерировать номера подтверждения. Сейчас я работаю над генерацией номера подтверждения, и он работал, но я хотел добавить проверку, чтобы убедиться, что сгенерированный номер подтверждения еще не сгенерирован. Поэтому я сделал текстовый документ и добавил его, чтобы он не просто возвращал ошибку. Итак, я не понимаю, откуда исходит моя ошибка. Кроме того, я знаю о проблемах в моем коде, и это кажется неаккуратным, но я работаю над этим, я разделил все эти классы и сейчас пытаюсь объединить их в одну программу. Спасибо вам за вашу помощь и за то, что вы согласились с моей грамматикой.

другой метод вызывает numberGen(); только для справки. Я прокомментировал строку, я думаю, что ошибка в том, что она указана в коде ошибки. Метод:

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Random;
import java.util.Scanner;

public class Conformation {
    static boolean check;

    static PrintWriter writer = null;
    static File conNums = new File("/Workspace/IA Crit C/Res/ConNums.txt");
    static File usedNums = new File("/Workspace/IA Crit C/Res/UsedConNums.txt");
    static Scanner in;

    public Conformation() throws IOException {
        int conNum = numberGen();
        check = checkNum(conNum);
        if (check == true) {
            checkUse(conNum);
        }
        addNum(conNum);

    }

    public static int numberGen() {
        Random rand = new Random();
        int max = 999999999;
        int min = 100000000;
        int conNum = 0;

        boolean run = true;

        while(run == true) {
            conNum = rand.nextInt((max - min) + 1) + min;

            check = checkNum(conNum); //if true it means it's already listed

            if (check == false) {
                run = false;
                addNum(conNum);
            }

        }
        return conNum;
    }

    private static void checkUse(int conNum) {
        try {
            in = new Scanner(usedNums);
        } catch (FileNotFoundException e) {

            e.printStackTrace();
        }

        while (in.hasNextLine()) {
            if (check == false) {
                int next = in.nextInt();
                if (next == conNum) {
                    check = true;
                }
            }
        }


    }

    private static void addNum(int conNum) {

        if (check == false) {

            try {
                writer = new PrintWriter(conNums);
                writer.println(conNum);
                writer.close();

            } catch (FileNotFoundException e) {
                System.out.println("File Not Found");
            }

        }
    }

    private static boolean checkNum(int conNum) {
        try {
            in = new Scanner(conNums);
        } catch (FileNotFoundException e) {

            e.printStackTrace();
        }

        while (in.hasNextLine()) {
            int next = in.nextInt();//this line
            if (next == conNum) {
                check = true;

            }
        }

        return check;
    }

}

Ошибка:

java.util.NoSuchElementException
    at java.base/java.util.Scanner.throwFor(Scanner.java:937)
    at java.base/java.util.Scanner.next(Scanner.java:1594)
    at java.base/java.util.Scanner.nextInt(Scanner.java:2258)
    at java.base/java.util.Scanner.nextInt(Scanner.java:2212)
    at Conformation.checkNum(Conformation.java:93)
    at Conformation.numberGen(Conformation.java:37)
    at GUI.<init>(GUI.java:55)
    at GUI$1.run(GUI.java:41)
    at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313)
    at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:770)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
    at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:740)
    at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...