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;
[*] }