Я по-прежнему довольно новичок в java, и в моем текущем проекте класса мы пытаемся установить учеников в классные комнаты, информация о студентах читается из текстового файла, который мы создаем, но моего читателя программа не останавливается после 4 строк (это конец информации студента). Он читает их все и печатает их, прежде чем анализировать, что у них есть, чтобы привести их в правильное значение classRoom
. Пожалуйста, помните, что я еще новичок в java.Читатель не останавливается в моей программе (java)
Также не уверен, об ошибке я получаю около Exception in thread "main" java.util.NoSuchElementException: No line found
это мой читатель программа
import java.io.*;
import java.util.Scanner;
public class Student{
private Scanner file;
public String name;
public String id;
public String year;
public String course;
//open the file to read
public void openFile(){
try{
file = new Scanner(new File("StudentFile.txt"));
}
catch(Exception e)
{
System.out.print("Could not Open File");
}
}
//Read the file and Assign the Student information strings
protected void readFileText(){
if(file.hasNext())
{
for(int n=0; n<4; n++)
{
name = file.nextLine();
id = file.nextLine();
year = file.nextLine();
course = file.nextLine();
System.out.print("\n" + name + "\n" + id + "\n" + year + "\n" + course + "\n");
}
}
else
{
name = null;
}
}
//close the file
public void closeFile(){
file.close();
}
//set information
public Student(){
this.name = name;
this.id = id;
this.year = year;
this.course = course;
}
//Get the informaton to main method
public String getName(){
return name;
}
public String getId(){
return id;
}
public String getYear(){
return year;
}
public String getCourse(){
return course;
}
}
Это мой основной метод
public class Registrar {
public static void main(String[] args) {
Student student = new Student();
student.openFile();
String namenull = " ";
String classRoom[] = {"Washington W1000", "Washington W1100", "Washington W1200", "Washington W1300", "Washington W1400", "Washington W1500", "Kennedy K1000", "Kennedy K1100", "Kennedy K1200", "Kennedy K1300"};
int maxCapacity = 25;
int studentNum = 0;
int num = 0;
int n = 0;
String currentClass = classRoom[0];
while(namenull != null){ // to read the file and set students to a classroom.
student.readFileText();
String course = student.getCourse();
while (n < 10){
if(currentClass == "Washington W1400"){
maxCapacity = 30;
}
else if(currentClass == "Kennedy 1000"){
maxCapacity = 25;
}
else if(currentClass == "Kennedy 1200"){
maxCapacity = 35;
}
int num1 = 1;
int num2 = 2;
int num3 = 3;
if(studentNum < maxCapacity && course == "Comp 182" && num < 10){
System.out.print("\nRegistered in Comp 182, in classroom " + currentClass);
studentNum++;
}
else{
while(num == num1 || num == num2 || num == num3 || num == num){
num = num++;
}
}
if(studentNum < maxCapacity && course == "Comp 182 Lab" && num1 < 10){
currentClass = classRoom[num1];
System.out.print("\nRegistered in Comp 182 Lab, in classroom " + currentClass);
studentNum++;
}
else{
while(num1 == num || num1 == num2 || num1 == num3 || num1 == num1){
num1 = num1++;
}
}
if(studentNum < maxCapacity && course == "Comp 101" && num2 < 10){
currentClass = classRoom[num2];
System.out.print("\nRegistered in Comp 101, in classroom " + currentClass);
studentNum++;
}
else{
while(num2 == num || num2 == num1 || num2 == num3 || num2 == num2){
num2 = num2++;
}
}
if(studentNum < maxCapacity && course == "Comp 101 Lab" && num3 <10){
currentClass = classRoom[num3];
System.out.print("\nRegistered in Comp 101 Lab, in classroom " + currentClass);
studentNum++;
}
else{
while(num3 == num || num3 == num1 || num3 == num2 || num3 == num3){
num3 = num3++;
}
}
currentClass = classRoom[num];
}
namenull = student.getName();
}
student.closeFile();
}
}
Как просил, мой StudentFile.txt
Alfredo Dominguez
1205586453
Freshman
Comp 182
Stacy Flores
6584527256
Sophmore
Comp 182 Lab
Это очень трудно читать ваш код, для вас и для нас, просто потому, что это не preoperly отступа. Пожалуйста, исправьте это. –
Как вы знаете, что ваша программа не останавливается после 4 строк для данного учащегося? Это предположение, которое вы делаете, потому что вы получаете исключение NoSuchElementException? Его происхождение происходит из одного из ваших вызовов nextLine(). Есть 4 из них, выполненных обратным образом в цикле for в readFileText(). Другими словами, вы всегда будете получать это исключение, если количество строк в вашем файле не кратно четыре. Я думаю, было бы полезно, если бы вы показали нам свой файл ввода и переформулировали свой вопрос. – trooper