Es gibt mehrere Syntaxfehler bedeuten in diesem Code, aber da TofuBeer bereits in den Kommentaren darauf hingewiesen hat, werde ich das Design und die Logik vorantreiben.
Geht man vom Code aus, nehme ich an, dass Sie nicht viel Erfahrung mit Java haben und vielleicht gar nicht mit Programmierung. Also werde ich langsam hierher gehen. Ich hoffe, Sie sind nicht durch meine Erklärungen beleidigt.
Sie sagen, dass Sie versuchen herauszufinden, wie viele der Objekte, die Sie in Ihrem Array speichern (wie zwei Ints), gleich sind. Um dies zu tun, müssen Sie verfolgen, welche einzigartigen Objekte Sie bereits gesehen haben. Dann vergleichen Sie jedes Objekt mit der Liste der eindeutigen Objekte und fügen Sie es zur Liste hinzu, wenn es keinem von ihnen entspricht. Dies ist der grundlegende Algorithmus.
Nun, haben Sie bemerkt, dass ich in meiner Beschreibung das Wort "Objekt" verwende? Wenn das passiert, bedeutet das normalerweise, dass Sie einen Kurs machen sollten. Ich würde einen einfachen wie dies macht, die zwei ganzen Zahlen halten:
class Box { // or whatever the objects are called
private final int height;
private final int width;
public Box(int h, int w) {
height = h;
width = w;
}
public int getHeight() {
return height;
}
public int getWidth() {
return width;
}
@Override
public boolean equals(Object other) {
if (!(other instanceof Box))
return false;
Box b = (Box) other;
return b.height == height && b.width == width;
}
@Override
public int hashCode() {
int hash = 7;
hash = 97 * hash + this.height;
hash = 97 * hash + this.width;
return hash;
}
}
versuchen zu verstehen, was jeder Teil dieses Code tut (vor allem, wenn dies tatsächlich Ihre Hausaufgaben ist). Sobald Sie es haben, fahren Sie mit dem nächsten Teil fort: Machen Sie die Berechnung, die Sie versucht haben zu tun.
Angenommen, Sie haben eine Reihe von Boxen haben, wie folgt aus:
Box[] boxes = {
new Box(40, 40), new Box(40, 40), new Box(80, 40), new Box(40, 40)
};
(Ich kann nicht sagen, ob Sie ein Array oder eine Liste verwenden, so dass ich bin Kommissionierung nur ein zu demonstrieren.
)
Ich habe bereits den Algorithmus für die Anzahl der eindeutigen Elemente zu finden, so werde ich Ihnen zeigen, wie ich es schreiben würde:
List<Box> unique = new ArrayList<Box>();
for (Box box : boxes) {
if (!unique.contains(box)) { // this is why I implemented equals() and hashCode()!
unique.add(box);
}
}
int numOfDifferentShape = unique.size();
Das ist viel einfacher als Spur von zwei ints zu halten versuchen, für Jedes Objekt hat außerdem den Vorteil, dass Sie Ihre Array-Indizes nicht durcheinander bringen können.
Sie könnten dies noch einfacher mit einem Set
. Es würde wie folgt aussehen:
Set<Box> boxSet = new HashSet<Box>();
for (Box b : boxes)
boxSet.add(b);
int numOfDifferentShape = boxSet.size();
Beachten Sie, dass diese beiden letzten Schnipsel verwenden Funktionen aus Java 1.5, so dass ich weiß nicht, ob Sie in sie vor ausgeführt haben.
Macht das die Dinge klarer?
Sie laufen über die Grenze, wenn a == myArray.size() - 1 (und ähnlich für b). Ihr Code ist zu fehlerhaft. Die zwei Schleife überprüft zum Beispiel. – dirkgently
http://stackoverflow.com/questions/700748/how-to-compare-value-in-array Sie müssen die vorherige Frage, die Sie gestellt haben, nehmen, schauen Sie sich die Antworten an und korrigieren Sie Ihren Code, damit er kompiliert wird. Arrays verwenden [] nicht get(). Arrays haben eine Längenvariable, keine Size() -Methode usw. – TofuBeer
Es ist mir nicht klar, was Sie zu tun versuchen. Kannst du es beschreiben? – DJClayworth