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