Guck dir mal an, wie du Road geschrieben hast![]()
eig genau so oO
Guck dir mal an, wie du Road geschrieben hast![]()
Guck dir mal an, wie du Road geschrieben hast![]()
Mit Raten schreibt man in den seltensten Fällen korrekten Code.vill Road.this.sourceCity?
Die Variabel Road wird es bei dir nicht geben, höchstens road![]()
Wenn es keine Variable road gibt, warum versuchst du dann sie zu benutzen, und was sollte sie sein?![]()
Road newRoad = new Road(cities[s], cities[t]);
Set<Road> set = new HashSet<Road>();
set.add(newRoad);
Road[] road = set.toArray(new Road[set.size()]);
System.out.println(Arrays.toString(road));
Ja, aber Variablen haben einen Scope - den Block, in dem sie deklariert sind. Außerhalb sind sie nicht sichtbar.
Geht es immer noch um die equals-Funktion?
Dann mach dir noch mal klar, auf welchem Objekt dieses Funktion aufgerufen wird, und was der Funktion übergeben wird.
@Override
public boolean equals (Object o){
Road road = (Road) o;
return (this.sourceCity.getName().equals(road)......
}
@Override
public boolean equals (Object o){
Road road = (Road) o;
return sourceCity.equals(road.sourceCity) && targetCity.equals(road.targetCity) ||
sourceCity.equals(road.targetCity) && targetCity.equals(road.sourceCity);
}
@Override
public int hashCode () {
return sourceCity.hashCode() + targetCity.hashCode();
}
}
und in meinem Generator
if (s != t) {
Road newRoad = new Road(cities[s], cities[t]);
if (cities[s].roads.contains(newRoad)) {
i--;
//hier evt. auch noch nen counter einfügen, ist ja alles random...
continue;
} else {
cities[s].roads.add(newRoad);
cities[t].roads.add(newRoad);
System.out.println(newRoad);
}
Name: City0, X: 485, Y:348 --> Name: City4, X: 103, Y:447
Name: City3, X: 137, Y:309 --> Name: City0, X: 485, Y:348
Name: City0, X: 485, Y:348 --> Name: City2, X: 461, Y:176
Name: City1, X: 151, Y:398 --> Name: City4, X: 103, Y:447
Name: City1, X: 151, Y:398 --> Name: City0, X: 485, Y:348
Name: City4, X: 103, Y:447 --> Name: City2, X: 461, Y:176
Name: City4, X: 103, Y:447 --> Name: City3, X: 137, Y:309
Name: City2, X: 461, Y:176 --> Name: City3, X: 137, Y:309
Name: City3, X: 137, Y:309 --> Name: City1, X: 151, Y:398
Name: City1, X: 151, Y:398 --> Name: City2, X: 461, Y:176
public int nextCity(int s) {
double dist, min = 100000;
int index = -1;
int start = 0;
Road r = roads[start];
while (start < cities.length){
{
while ((start < amountCities()) && cities[start].inTour) start++;
if (start >= amountCities()) {
break;
}
dist = distance(start, start);
if ((start != s) && (dist < min)) {
min = dist;
index = start;
}
start++;
}
}
return index;
}
public void nearestNeighbour()
{
int s = 0;
for (int i=0; i<cities.length - 1; i++)
{
cities.inTour = true;
[*] cities.next = nextCity(s);
[*] s = cities.next;
[*] }
[*] cities.inTour = true;
[*] cities.next = 0;
[*] }