Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Guten Tag,
ich bin TI-Student und befasse mich gerade mit dem TSP problem... allerdings bin ich noch nicht weit gekommen ,
ich habe eine Klasse Place von der ich Objekte machen will, die den Namen einer Stadt und die x,y, Koordinaten bekommen
Java:
public class Place
{
String name;
int x;
int y;
public Place(String name, int x, int y)
{
this.name = name;
this.x = x;
this.y = y;
}
}
so, und in einer anderen Klasse die Journey heisst, möchte ich eingeben um wie viel Städte es sich handelt um dann dementsprechend viele Objekte von Place zu erstellen. Dafür habe ich ein Array mit dem Typ Place angelegt und möchte das mit einer for-Schleife durchlaufen, nun bekomme ich eine NullPointerException da ich diese ja noch nicht mit new erstellt habe... aber geht das überhaupt in einer schleife? Oder gehe ich das Problem ganz falsch an? ???:L
Ich hab natürlich auch Google bemüht :rtfm: und da stand das es wohl mit ArrayList gehen soll aber ich finde kein richtiges Beispiel bzw. Erklärung für meinen Fall
Java:
import java.util.Scanner;
public class Journey
{
static Place cityArr[];
public static void Cities(int numberOf)
{
String cityName ="";
int xCoord = 0;
int yCoord = 0;
Place []cityArr = new Place [numberOf];
for (int i = 0 ; i < numberOf; i++)
{
System.out.println("Name der " + i+1 + ".) Stadt");
Scanner cName = new Scanner(System.in);
cityName = cName.toString();
cityArr[i].name = cityName;
System.out.println("X-Koordinate der " + i+1 + ".) Stadt");
Scanner cXcoord = new Scanner(System.in);
xCoord = cXcoord.nextInt();
cityArr[i].x = xCoord;
System.out.println("Y-Koordinate der " + i+1 + ".) Stadt");
Scanner cYcoord = new Scanner(System.in);
yCoord = cYcoord.nextInt();
cityArr[i].y = yCoord;
}
}
public static void main(String[] args)
{
int numberOf;
System.out.println("Wieviele Städte sollen besucht werden?:");
Scanner number = new Scanner(System.in);
numberOf = number.nextInt();
Cities(numberOf);
}
}
Nimm in Zeile 13 die eckigen Klammern weg (bei mir gibts das ´nen Compilerfehler...).
Zweitens: das mit der ArrayList ist schonmal eine sehr gute Idee, da du hiermit leichter Städte in die Liste einfügen oder aus ihr löschen kannst.
Java:
ArrayList<Place> places = new ArrayList<Place>();
places.add(new Place(...));
for (Place p: places) {
// do something
}
Drittens: Die Städteliste statisch zu deklarieren finde ich sher ungünstig, damit sagst du ja, dass sämtliche Routen die selben Städte bedienen. Besser ist es, für jede Route eine eigene Liste zu verwenden, also nicht statisch das Ganze...
okay ich versuche es mal mit dem ArrayList das kommt in den Vorlesungen nächste Woche dran wenn ich es richtig im Kopf habe, kann nicht schaden vorauszuarbeiten^^
aber zu der Lösung von bobbsen, habe ich dann wenn ich z.B. 4 Städte eingebe nicht 4 Objekte mit dem gleichen Namen?
cities[0] = new Place("Dresden", ...);
cities[1] = new Place("Berlin", ...);
cities[2] = new Place("Rostock", ...);
cities[3] = new Place("Dortmund", ...);
also bei mir passt das soweit jetzt und ich weiss nicht ob die frage hier reingehört,
aber ich verusch die ganze zeit das TSP zu berechnen aber ich verstehe die vorgehensweise einfach nicht, ich war auch schon auf ein haufen seiten und habs bereits aufgegeben das ganze zu programmieren und versuch es per hand. kann mir vll. jemand dafür einen schritt für schritt algorithmuss liefern den ich in code umsetzen kann? oder mal eine seite empfehlen die das ganze drumm herum weg lässt und einem die vorgehensweise an einem beispiel oder so erklärt?