내 코드에 문제가 있습니다. 컴파일되지만 드라이버 클래스 끝 부분에 for-each 루프가 있기 때문에 스캐너에 null이 몇 번이나 인쇄되는 문제가 발생합니다. 목표는 텍스트 파일에서 이름, 성 및 우편 번호 문자열을 읽고 for-each 루프를 사용하여 입력 내용을 인쇄하는 것입니다. 내가 뭘 잘못하고 있는지 모르겠다.FileScanner (배열 객체 포함)
입력 파일의 샘플 라인은 다음과 같이 읽을 것입니다 :
FIRSTNAME : 조 성 : Jimbob을 PostalCode : 55555
편집 : .txt 파일의 25 개 라인이 거기에있다 25 개의 Person 객체를 보유하는 배열. 내 잘못이야!
이
는 지금까지 단순화 한 것입니다 :스캐너와 함께 데이터를 출력하는 드라이버 클래스 :
... throws IO Exception
String firstname = " ";
String lastname = " ";
String postalcode = " ";
File file = new File("input.txt");
Scanner fileScan = new Scanner(file);
Person person[] = new Person[25]; // An array of 25 Person objects see Person class
while(fileScan.hasNext()) //Error was generated here at Line 20 originally N. Pointer Exception not too sure how to regenerate it
{
String token= fileScan.next(); //Token to scan for each word and match it with the string before it
if(token.equals("Firstname: "))
{
firstname = fileScan.next();
}
else if(token.equals("Lastname: "))
{
lastname = fileScan.next();
}
else if(token.equals("Postalcode: "))
{
postalcode = fileScan.next();
}
for(Person info : person) // Generates null on execution supposed to print Array
{
System.out.println(info); // Prints null not exactly sure why
}
그리고 사람 개체가 만들어 볼 수있는 Person 클래스 :
public class Person
{
private String firstname, lastname, postalcode;
public Person(String firstname, String lastname, String postalcode)
{
this.firstname = firstname;
this.lastname = lastname;
this.postalcode = postalcode;
}
public String toString()
{
return(firstname + " " + lastname +" "+ postalcode);
}
}
예외에 관해 묻는 열쇠는 예외 스택 추적을 실제로 표시해야하며, 어떤 행을 던져야하는지 명확하게 표시해야한다는 것입니다. 그렇지 않으면 무엇이 잘못 되었을지를 추측해야합니다. 또한 무엇이 잘못되었거나 그것이 어디에서 왔는지를 밝히기 위해 디버깅을 직접해야합니다. 그렇게하면 게시하는 코드가 문제와 관련이 있는지 확인할 수 있습니다. –
나는 그것을 나타낼 것입니다! 그 점을 지적 해 주셔서 감사합니다. –
또한 3 개의 .next() 행에 대해 하나의'.hasNext()'검사를 수행하고 있습니다. 나 자신은'.hasNextLine()'을 체크하고 루프 안에서'.nextLine() '을 하나만 호출하고 리턴 된 라인을 파싱한다. 당신의 오류에 대한 내 내기 - 당신은 파일에 대한 올바른 장소를 찾고 있지 않습니다. Java가 파일을 찾는 위치를 확인하려면 파일을 요청할 수 있습니다. 'System.out.println (System.getProperty ("user.dir"));' –