3 개의 문자열과 1 개의 부울의 합성 - 사용자 정의 유형의 배열을 채우려고합니다. 유형 이름은 PrinterType.
이며이 3 개의 String 및 부울 값에 대해 SET 및 GET하는 메소드가 있습니다.사용자 정의 유형의 Java 배열
배열 채우기가 실행될 다른 클래스 파일에서이 파일을 사용하려고하지만 프로젝트를 실행할 때 java.lang.NullPointerException
이 발생합니다.
이 문제는 문자열 문제입니다. 초기화되지 않았지만 사용자 정의 형식 배열의 문자열 필드를 초기화하는 방법을 알지 못합니다. 나는 누군가가 이것에 관해 나를 도울 수 있기를 바란다. 사용자 정의 유형 및 구현 클래스는 다음과 같습니다. 그런데
는, 구현 클래스의 라인에 오류 점 : Printers[i].setPersonality(aLineOfText[0].toString());
//implementing class =======================================
package MainPkg;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class ReadDefinitions
{
final String sFileName = "C:/Definitions OEvP/Printers.txt";
private static int iNoOfLines;
public PrinterType[] Printers;
private int getNumberOfLines() throws IOException
{
FileReader fr = new FileReader(sFileName);
BufferedReader br = new BufferedReader(fr);
iNoOfLines = 0;
while (br.readLine() != null)
{
iNoOfLines++;
}
br.close();
fr.close();
return iNoOfLines;
}
public void setArray() throws IOException
{
Printers = new PrinterType[this.getNumberOfLines()];
int i = 0;
FileReader fr = new FileReader(sFileName);
BufferedReader br = new BufferedReader(fr);
String[] aLineOfText = {};
while (i != this.getNumberOfLines())
{
aLineOfText = br.readLine().split(";");
Printers[i].setPersonality(aLineOfText[0].toString());
Printers[i].setProductNumber(aLineOfText[1].toString());
Printers[i].setPL(aLineOfText[2].toString());
if ("1" == aLineOfText[3].toString())
{
Printers[i].setHipot(Boolean.TRUE);
}
else
{
Printers[i].setHipot(Boolean.FALSE);
}
i++;
aLineOfText = null;
System.gc();
}
}
}
//user defined Class ======================================
package MainPkg;
public class PrinterType
{
private String sPersonality;
private String sProductNumber;
private String sPL;
private Boolean bHipot;
//constructor
PrinterType()
{
sPersonality = "test";
sProductNumber = "test";
sPL = "test";
}
//printer information
//set methods
public void setPersonality(String localString)
{
sPersonality = localString;
}
public void setProductNumber(String localString)
{
sProductNumber = localString;
}
public void setPL(String localString)
{
sPL = localString;
}
public void setHipot(Boolean localBoolean)
{
bHipot = localBoolean;
}
//get methods
public String getPersonality()
{
return sPersonality;
}
public String getProductNumber()
{
return sProductNumber;
}
public String getPL()
{
return sPL;
}
public Boolean getHipot()
{
return bHipot;
}
}
"프린터 [i] .setPersonality (aLineOfText [0] .toString());" 단지 "Printers [i] .setPersonality (aLineOfText [0]);"대신 " 왜냐하면 내가 당신의 코드를 볼 때 문자열 타입이기 때문에 그것에 toString()을 호출 할 필요가 없기 때문이다. – RE350
안녕하세요 미친, 고마워, 나는 그걸 간과했다. 그래서 toString()을 사용하는 것이 좋습니다. 하지만 난 이미 코드를 수정하고 여전히 같은 오류가 발생했습니다. 그것은 자바에서 가능하지 않을 수 있습니까? – jude
트릭은 오류 스택의 추적을 * 읽음으로써 오류의 출처를 파악하는 것입니다. 이 스택 추적이 없으면 알기보다는 추측해야합니다. –