나는 컬렉션에 대해 배우기 시작한 완전한 Java 초보자입니다. 텍스트 파일을 가져 와서 해당 파일의 내용에서 개체 목록을 만들 수있는 프로그램을 작성하려고합니다. 특히, 나는 각 학생의 이름, 성 및 졸업 연도가있는 수업을 학생들에게 제공합니다. 내가 사용하고 텍스트 파일 형식으로되어 있습니다List.Unknown 실수로 여러 번 Java에 추가하기
톰 블루 2007 리처드 그린 1996 로버트 블랙 2003 베스 화이트 2005
각 학생 사이에 새로운 라인을 제외하고. 내가 얻는 문제는 내 목록을 만들 때 갈 때, 내 목록에 마지막 학생이 무엇이든 여러 인스턴스로 목록을 만드는 것처럼 보입니다. 예를 들어 위의 네 학생과 함께 파일을 사용하면 내 프로그램에서 Beth White 2005 사본 4 개가 포함 된 목록을 만듭니다. 여기에서 내가 뭘 잘못하고 있는지 확실하지 않습니다 ... 나는 생각하지 않습니다. 내 스캐너의 문제이며, 기본 인쇄 방법을 사용하고 동일한 결과가 발생했기 때문에 내 인쇄 방법에 문제가 없다고 확신합니다. 혹시
import java.io.IOException;
import java.lang.IllegalStateException;
import java.nio.file.*;
import java.util.*;
public class StudentList
{
private static Scanner input;
public static void main(String[] args)
{
Scanner keyInput = new Scanner(System.in);
System.out.println("Please enter the name of the file containing the students.");
String fileName = keyInput.next();
List<Student> studentList = new ArrayList<>(openAndReadFile(fileName));
printList(studentList);
}
private static List<Student> openAndReadFile(String fileName)
{
try
{
input = new Scanner(Paths.get(fileName));
}
catch (IOException ioException)
{
System.err.println("Error opening file. Terminating.");
System.exit(1);
}
List<Student> studentList = new ArrayList<>();
try
{
while (input.hasNext())
{
studentList.add(new Student(input.next(), input.next(), input.nextInt()));
}
}
catch (NoSuchElementException ee)
{
System.err.println("File improperly formed. Terminating.");
}
catch (IllegalStateException se)
{
System.err.println("Error reading from file. Terminating.");
}
if (input != null)
input.close();
return studentList;
}
private static void printList(List<Student> list)
{
for (Student student : list)
System.out.printf("%s%n", student);
}
}
답변의 형식으로 작성되지 않았지만이 형식이어야합니다. –
이것은 정확하게 문제가되었습니다. 고맙습니다. 나는 여전히 '정적'의 진정한 의미에 관해서 나 자신을 가르쳐야 만한다. 그러나 나는 그 작은 설명을 고맙게 생각한다. –