간단한 Java 프로그램에서 roomtypes의 이름을 비교하려하지만 작동하지 않습니다.Java 배열을 비교하십시오.
지금까지 나는이 있습니다
public class Main {
public static void main(String[] args) {
RoomType[] ar = new RoomType[10];
String s = "";
String duplicate = "";
ar[0] = new RoomType("Standaard", 2, 60.0);
ar[1] = new RoomType("DeLuxe", 2, 85.0);
ar[2] = new RoomType("DeLuxe", 4, 125.0);
ar[3] = new RoomType("Hiker", 2, 35.0);
for (int i = 0; i < ar.length; i++) {
if (ar[i] != null) {
s += ar[i] + "\n";
}
for (int j = 0; j < ar.length -1; j++) {
if (ar[i] == ar[j] && ar[i] != null && ar[j] != null) {
duplicate = ar[i] + " has the same name as " + ar[j];
}
}
}
System.out.println("These are the roomtypes: \n" + s + "\n");
System.out.println(duplicate);
}
}
나는 복식가있는 경우들과 나는 SYSOUT을 필요로하는 모든 ar[]
'의 이름 (배열의 첫 번째 요소)을 비교하려면 복식의 위치 (ar[]
)를 제공합니다. getTypeName() 메소드는 다른 클래스 RoomType에 있습니다.
우선, 당신은'for' 루프 종류가 잘못되었습니다. 배열을 실행하는 올바른 개념이 있지만 비교할 getTypeName() 메소드를 호출하지는 않습니다. 'ar [i] == ar [j]'명령문은 두 객체를 비교합니다. 'RoomType' 클래스의'equals (Object obj)'를 오버라이드 (override) 해, 그것들이 동등한 지 어떤지를 판정 할 필요가 있습니다. 그 문을 변경하지 않았다면, 이전에 'ar [i] .getTypeName(). equals (ar [j] .getTypeName())'과 같은 문을 변경하기 위해 – 3kings
을 변경하려고 시도했지만 nullpointerexception을 얻었습니다. – spacewalk92
물론 당신은 다음과 같이합니다 : P. if 문에서 널 (NULL)이 아닌지 검사하여 처음으로 널 (NULL)인지 점검하십시오. – 3kings