Probleme mit AStern Algortihmus

Status
Nicht offen für weitere Antworten.

L.a.r.s.

Mitglied
Hallo,

Ich habe folgendes Problem:

Ich habe ein Programm, dass für einen Roboter selbständig den kürzesten Weg durch ein Labyrinth finden soll. Das Labyrinth ist in Form von 0en und 1en in einen Array gespeichert. Eine 0 stellt einen Weg dar und eine 1 eine Wand. Den kürzesten Weg soll mein Roboter mit einem AStern Algortihmus finden.
So nun zu meinem Problem:

Es werden nicht immer die optimalen Wegen gelaufen. In meinem Beispiel Labyrinth läuft der Roboter im Bereich von der Koordinate (16,11) bis (3,13) im ZickZack und ich habe keine Ahnung warum.
Ich habe mal den Code des Algortihmus angehängt. Wenn jemand Interesse hat kann ich auch das ganze Projekt inklusive Oberfläche schicken.



Code:
import java.util.*;


/**
 * 

Title: Kuka für Swt</p>
 * 

Description: Labyrinth Programm</p>
 * 

Copyright: Copyright (c) 2005</p>
 
 */


public class labysolv {


   int testelse = 0;

     private int[][] walkability ={{0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
   {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
   {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
   {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
   {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
   {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
   {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
   {0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
   {0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
   {0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
   {0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0},
   {0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
   {0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
   {0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
   {0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
   {0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
   {0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
   {0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
   {0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
   {0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
   {0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
   {0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
   {0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
   {0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
   {0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};



    // Konstanten
    public static int mapWidth = 25; //wirkliche Größe von 1 bis 25
    public static int mapHeight = 25;
    public static int numberPeople = 500;
    public static int onClosedList = 10;
    public static int notFinished = 0;
    public static int notStarted = 0;
    public static int found = 1;
    public static int nonexistent = 2;
    public static int walkable = 0;
    public static int unwalkable = 1;
    int test = 4;


    // Arrays
    Vector liste = new Vector();
    Vector liste2 = new Vector();
    Vector liste_turn = new Vector();



   //int[][] walkability = new int[mapWidth][mapHeight];
    int[] openList = new int[mapWidth*mapHeight+2];             // 1 dimensionaler array mit der ID der offenen Knoten
    int[][] whichList = new int[mapWidth+1][mapHeight+1];       // 2 dimensionaler array in dem gespeichert wird ob ein Knoten offen oder geschlossen ist
    int[] openX = new int[mapWidth*mapHeight+2];                // array um x Koordinaten von Element der offenene Liste zu speichern
    int[] openY = new int[mapWidth*mapHeight+2];                // array um y Koordinaten von Element der offenene Liste zu speichern
    int[][] parentX = new int[mapWidth+1][mapHeight+1];         // array für x Koordinate des Vaters eines Knoten
    int[][] parentY = new int[mapWidth+1][mapHeight+1];         // array für y Koordinate des Vaters eines Knoten
    int[] Fcost = new int[mapWidth*mapWidth+2];                 // array zum Speichern der F Kosten in der openList
    int[][] Gcost = new int[mapWidth+1][mapWidth+1];            // array zum Speichern der G Kosten
    int[] Hcost = new int[mapWidth*mapHeight+2];                // array zum Speichern der H Kosten in der openLIst
    int pathLength;                 // speichert die Länge des gefundenen Pfades
    int pathLocation;               // speichert aktuelle Position entlang des gewählten Pfades
    int[] pathBank = new int[numberPeople+1];                // int[]*

    // Weg
    int[] pathStatus = new int[numberPeople+1];
    int xPath;
    int yPath;



    public labysolv(){

        startPathFind(1,0,0,24,24);
    }

    /*
    public Vector start(int[][] walkability)
    {
      this.walkability = walkability;
     // traverse(0, 0); // 0,0 ist der Startpunkt
      //a_Stern(grid);
      //liste_umd(liste);needed
      //printList(liste_turn);
      startPathFind(1,0,0,24,24);
      return liste_turn;
    }
     */



    public int FindPath( int startingX, int startingY, int targetX, int targetY) {
// liste_turn.add(new Tupel(0,0));
        int onOpenList = 0;
        int parentXval = 0;
        int parentYval = 0;
        int a = 0;
        int b = 0;
        int m = 0;
        int u = 0;
        int v = 0;
        int temp = 0;
        int corner = 0;
        int numberOfOpenListItems = 0;
        int addedGCost = 0;
        int tempGCost = 0;
        int path = 0;
        int tempX;
        int pathX;
        int pathY;
        int cellPosition;
        int newOpenListItemID = 0;


        // 1. Die Anfangskoordinaten
        int startX = startingX;
        int startY = startingY;
        targetX = targetX;
        targetY = targetY;


        // 2. Schnelle Überprüfung des Weges( Mauer, außerhalb des Labyrinths)

        // If Startpunkt = Endpunkt
        if(startX == targetX && startY == targetY && pathLocation > 0)
            return found;


       if(startX == targetX && startY == targetY && pathLocation== 0)
           return nonexistent;


       // If Zielknoten ist nicht begehbar ==> return its a nonexistent path
        if (walkability[targetX][targetY] == unwalkable)

        //:noPath
        {
        xPath = startingX;
        yPath = startingY;
        return nonexistent;
        }
        //noPath;


        // 3. Variablen initialisieren

        if (onClosedList > 1000000) //resetwhichList
        {
            for (int x = 0; x < mapWidth; x++){
                for (int y = 0; y < mapHeight; y++){
                    whichList[x][y] = 0;
                }//for
            }//for
            onClosedList = 10;
        }//if
        onClosedList = onClosedList + 2;
        onOpenList = onClosedList-1;
        pathLength = notStarted;
        pathLocation= notStarted;
        Gcost[startX][startY] = 0;  // reset Kosten von Startpunkt auf 0
        System.out.println("***3***");



        // 4. Füge den Startpunkt zu der offenen Liste hinzu

        numberOfOpenListItems = 1;
        openList[1] = 1; // als Oberstes im binären heap kennzeichnen
        openX[1] = startX;
        openY[1] = startY;


        //5.mache alles solange bis ein Pfad gefunden ist oder bis alles ohne Ergebnis durchsucht ist
        do
        {

            //6. wenn die offene Liste nicht leer ist, nimm das erste Element der Liste
            // dies ist das Element mit den niedrigsten F-Kosten
            if(numberOfOpenListItems != 0)
            {
                //7. pop das erste Element aus der Liste
                parentXval = openX[openList[1]];
                parentYval = openY[openList[1]];  // speichere die Koordinaten des Elments.
                //liste_turn.add(new Tupel(parentXval,parentYval));
                //System.out.println("X: " + parentXval + "Y:"+ parentYval);
                whichList[parentXval][parentYval] = onClosedList; // füge das Element zur closedList hinzu

                //openList ist ein binärer Heap: Lösche dieses Element von der openList
                numberOfOpenListItems = numberOfOpenListItems - 1;

                // Lösche das oberste Element des heap und ordne ihn neu mit dem kleinstem F-Kosten Element oben
                openList[1] = openList[numberOfOpenListItems + 1]; // das letzte Element nach oben
                v = 1;

                // mache das ganze solange bis das oberste element nach unten sinkt
                do
                {
                   u = v;
                   if (2*u+1 <= numberOfOpenListItems) //es gibt beide Kinder
                   {
                       //schau ob F kosten der Eltern größer als die der Kinder sind
                       // wähle das kleinste won beiden
                       if (Fcost[openList[u]] >= Fcost[openList[2*u]])
                           v = 2*u;
                       if (Fcost[openList[v]] >= Fcost[openList[2*u+1]])
                           v = 2*u+1;
                   } //if



                else
                {
                if(2*u <= numberOfOpenListItems) // es gibt nur ein Kind
                {
                    //schau ob die Kosten von Vater größer als Kind
                    if (Fcost[openList[u]] >= Fcost[openList[2*u]])
                        v = 2*u;
                }// IF
                }//else

                if ( u!=v) // wenn F von Vater größerals von Kind vertausche
                {
                    temp = openList[u];
                    openList[u] = openList[v];
                    openList[v] = temp;
                }//if
                else
                    break; //andernfalls beende schleife

                }

                while (true); //normalerweise mache solange bis du fertig bist also solange true




                // 7. prüfe die erwartete Entfernung
                for( b = parentYval-1; b <=parentYval + 1; b++){
                    for ( a = parentXval -1 ; a <=parentXval+1;a++){

                        //wenn noch nicht außerhalb der Karte(vermeide out of bounds)
                        if(a != -1 && b != -1 && a != mapWidth && b != mapHeight) {

                            // if noch nicht auf der closed List
                            if(whichList[a][b] != onClosedList) {
                                //if keine wand
                                if(walkability[a][b] != unwalkable){
                                    //Streife keine Ecken
                                    corner = unwalkable;
                                    if(a== parentXval-1)
                                    {
                                        if(b==parentYval-1)
                                        {
                                            if(walkability[parentXval-1][parentYval] == unwalkable
                                            || walkability[parentXval][parentYval-1] == unwalkable);// corner = unwalkable; //hier stand mal der Zeilenumbruch mit "\"
                                        } //if
                                        else if(b==parentYval+1)
                                        {
                                            if(walkability[parentXval][parentYval+1] == unwalkable
                                            || walkability[parentXval-1][parentYval] == unwalkable);//corner = unwalkable;
                                        }//else if
                                    }//if (a== parentXval-1)
                                else if(a== parentXval+1)
                                {
                                    if(b==parentYval -1)
                                    {
                                        if(walkability[parentXval][parentYval-1] == unwalkable
                                        || walkability[parentXval+1][parentYval] == unwalkable);// corner = unwalkable;
                                    } // if
                                    else if(b==parentYval+1)
                                    {
                                        if(walkability[parentXval+1][parentYval]==unwalkable
                                          ||walkability[parentXval][parentYval+1]==unwalkable);// corner=unwalkable;
                                    }

                                }//else if
                                if (corner == unwalkable) {
                                    // wenn noch nicht auf offen liste add it
                                    if(whichList[a][b] != onOpenList)
                                    {
                                        //ein neues open list opbjekt in binary heap
                                        newOpenListItemID = newOpenListItemID +1; // jedes neue item hat eine id
                                        m= numberOfOpenListItems+1;
                                        openList[m] = newOpenListItemID; // füge das neue Element am boden des baumes ein
                                        openX[newOpenListItemID]=a;
                                        openY[newOpenListItemID]=b; //x,y koordinaten merken

                                        //speichere die G kosten
                                        if(Math.abs(a-parentXval) == 1 && Math.abs(b-parentYval)==1)
                                            addedGCost = 14; //diagonal
                                        else
                                            addedGCost = 10; //non-diagonal
                                        Gcost[a][b] = Gcost[parentXval][parentYval] + addedGCost;

                                        // speichere die H und F Kosten
                                        Hcost[openList[m]] = 10*(Math.abs(a-targetX)+ Math.abs(b-targetY));
                                        Fcost[openList[m]] = Gcost[a][b] + Hcost[openList[m]];
                                        parentX[a][b] = parentXval;
                                        parentY[a][b] = parentYval;

                                        //bewege das neue openlist Element an eine höhere Stelle implements binären heap
                                        //starte am Boden; solange bis richtiger platz gefunden
                                        while(m!=1)
                                        {
                                            //schau ob kosten des kindes f < als F des Vaters. wenn ja tausche
                                            if(Fcost[openList[m]] <= Fcost[openList[m/2]])
                                            {
                                                temp = openList[m/2];
                                                openList[m/2] = openList[m];
                                                openList[m]=temp;
                                                m=m/2;
                                            }//if
                                            else
                                                break;
                                        }
                                        numberOfOpenListItems = numberOfOpenListItems+1;  //noch eine zu den elementen implements heap
                                        whichList[a][b]= onOpenList;
                                    }

                                        // 8.************************************************
                                        //*****************************
                                        //Wenn die aktuelle Zelle schon in der offenen Liste schau ob es ein besserer Weg bis hierher vom Startpunkt war
                                        // Wenn ja dann tausche das Elternteil und die G und die F Kosten
                                        else //IF whichLIst(a,b) = onOpenList
                                        {
                                            //Zeige die G Kosten des neuen Pfades
                                            if(Math.abs(a-parentXval)==1 && Math.abs(b-parentYval)==1)
                                                addedGCost=14; //diagonal
                                            else
                                                addedGCost = 10; //nondiagonal
                                            tempGCost =Gcost[parentXval][parentYval]+addedGCost;

                                        }
                                    //wenn der Pfad kürzer ist d.h. die G kosten sind kleiner dann tausche
                                    //die G und F Kosten der aktuellen Zelle
                                    if(tempGCost < Gcost[a][b]) //wenn G Kosten geringer sind
                                    {
                                        parentX[a][b] = parentXval; //tausche die Nachbarn
                                        parentY[a][b] = parentYval;
                                        Gcost[a][b] = tempGCost; //tausche G Kosten

                                        // da das Tauschen der G Kosten auch das Tauschen der F Kosten zu Folge
                                        // hat(wenn das Element in der offenen Liste ist) muss man  die gespeicherten
                                        // Kosten und die Position in der open List ändern
                                        for(int x = 1;x <= numberOfOpenListItems; x++) //schau nach dem Element im Heap
                                        {
                                            if(openX[openList[x]]==a &&openY[openList[x]]==b) //element gefunden
                                            {
                                                Fcost[openList[x]]=Gcost[a][b]+Hcost[openList[x]]; // tausche F Kosten

                                                // schau ob das tauschen der Kosten die Position implements Heap verändert
                                                m=x;
                                                while(m!=1) // while das Element nicht oben ist(m=1)
                                                {
                                                    //schau ob das Kind < Vater, Wenn ja tausche beide
                                                    if(Fcost[openList[m]]<Fcost[openList[m/2]])
                                                    {
                                                        temp = openList[m/2];
                                                        openList[m/2] = openList[m];
                                                        openList[m]= temp;
                                                        m = m/2;
                                                    }
                                                    else
                                                        break;
                                                }
                                                break; //ende für x = loop
                                            }// if openX(openList(x))=a
                                        }//for x=1 to numberOfOpenLIstItems
                                    }// if tempGCost < GCost(a,b)
                                }//else if whichList(a,b)
                                }//If not cutting a corner
                            }//If not a wall/obstacle
                        }//if not already on the closedList
                    }//If not of the map
                }//for(a=parenXval-1;a<=parentXval+1);a++)
                testelse = testelse + 1;
               //  System.out.println("ende langes else"+testelse);
        }//for(b=parent....

      //  }




        //9. If Open List ist leer das gibt es keinen Pfad
        else
        {
            System.out.println("nonexistent");
            path = nonexistent;
            break;
        }

        // If Ziel ist in openList dazugekommen dann gibt es einen Pfad
        if(whichList[targetX][targetY]==onOpenList)
        {
            System.out.println("Path found");
           path=found;
           break;

        }
    }

    while(true); //solange bis pfad gefunden wurde



        //10.Speicher den Pfad wenn es ihn gibt.
                if (path == found)
                {

                        //a.Vom Endpunkt zum Startpunkt zurücklaufen und jede Zelle als Vater betrachten
                        // zeige die Länge des Pfades
                        pathX = targetX; pathY = targetY;
                        do
                        {
                                //schau nach dem Vater der aktuellen Zelle
                                tempX = parentX[pathX][pathY];
                                pathY = parentY[pathX][pathY];
                                pathX = tempX;

                                //zeige die Pfadlänge
                                pathLength = pathLength + 1;
                        }
                        while (pathX != startX || pathY != startY);




                        // kopiere die Pfadinformationen in die databank. Vom Ziel zum Startpunkt in umgekehrter Reihenfolge
                        pathX = targetX ; pathY = targetY;
                        cellPosition = pathLength*2;//beginne am Ende
                        do
                        {
                                cellPosition = cellPosition - 2;//immer 2 zurück
                                pathBank[cellPosition] = pathX;
                                pathBank[cellPosition+1] = pathY;
                                System.out.println("******");
                                System.out.println("PUNKT: X" + pathX +"Y"+ pathY);
                              // liste_turn.add(new Tupel(pathX,pathY)); //??????????????????
                             // liste_turn.add(new Tupel(pathX,pathY));



                                //d.schau nach dem Elternteil der aktuellen Zelle
                                tempX = parentX[pathX][pathY];
                                pathY = parentY[pathX][pathY];
                                pathX = tempX;

                                //e.Wenn Startpunkt erreicht ==> Ende
                        }
                        while (pathX != startX || pathY != startY);
                        System.out.println("PUNKT: X" + pathX +"Y"+ pathY);
                        //liste_turn.add(new Tupel(pathX,pathY));//?????????????????????????

                        //11.lese Startpunkt
                      //  ReadPath(startingX,startingY,1); // hier mal schaun???****************************

                }
         //System.out.println("Ende");
        return path;






} //end pathfinder


    public void ReadPath()
    {
    // wenn es einen Pfad gibt, lies die Daten des Pfades aus der Pfad Bank
    pathLocation=1; //Pfad am ersten Schritt
    while(pathLocation < pathLength)
    {
        int a = pathBank[pathLocation*2-2];
        int b = pathBank[pathLocation*2-1];
       
        pathLocation=pathLocation+1;
         //System.out.println("PUNKT: X" + this.parentX+"Y"+ openY);
        System.out.println(""+whichList[a][b]);
        whichList[a][b]=3; //zeichne den Pfad
         //liste_turn.add(new Tupel (a,b)); //***************hier die Ausgabe an die GUI
        
        
    }
    }


   // public void ReadPath(int pathfinderID, int currentX, int currentY,int pixelperframe){};
   // public void ReadPathX(int pathfinderID, int pathLocation) {};
  //  public void ReadPathY(int pathfinderID, int pathLocation) {};



    //dies wird einmal meine Hauptfunktion!!!!*******************************
    // diese funktion aufrufen um pfad zu berechnen;**************************************************
    public void startPathFind(int path, int startX,int startY, int targetX, int targetY) {
        if(true)

        {

            path = FindPath( startX,startY, targetX,targetY);
            if(path==found)ReadPath();


        }
    }
    
    public static void main (String args[]){
        new labysolv();
        
    }

}

Schon mal Vielen Dank und ich bin für jeden Tip dankbar!!
 

L.a.r.s.

Mitglied
Oh ja danke schau ich mir gleich mal an. Ist aber komisch hab vorhin nach "A*" im ganzen Forum gesucht und nichts gefunden.
 

L.a.r.s.

Mitglied
@Illuvatar

Jetzt hab ich mir das ganze mal genau angeschaut und hab meine erwartete Kostenfunktion zum Ziel jetzt auch mit dem Pythagoras so wie du und nicht mehr mit der Manhattan Funktion(hab gelesen gehabt das sie gut funktionieren soll) berechnet. Und siehe da der gefundenen Weg ist fast perfekt.

Danke nochmal!
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Probleme beim Erstellen eines runnable-jar files Allgemeine Java-Themen 1
S Umstellung von File auf Path - Probleme mit Stream Allgemeine Java-Themen 5
C Probleme mit javax.mail.Session Allgemeine Java-Themen 8
M tomcat probleme Allgemeine Java-Themen 1
N Division macht Probleme Allgemeine Java-Themen 14
B Java Reflection Probleme beim wehcselseitigen Referenzieren zweier Klassen/Objekte Allgemeine Java-Themen 14
MarvinsDepression Probleme mit relativem Dateipfad Allgemeine Java-Themen 1
G Geotools Probleme nach PC-Wechsel Allgemeine Java-Themen 6
nibe1501 GUI Probleme Allgemeine Java-Themen 16
C Probleme mit dem WindowBuilder Allgemeine Java-Themen 3
P Selenium . Probleme ein Iron Icon Element anzusprechen Allgemeine Java-Themen 2
B Compiler-Fehler Probleme beim Kompilieren mit Jsoup Allgemeine Java-Themen 8
K VisualVM Profiling Remote Probleme Allgemeine Java-Themen 1
O Leerzeichen und Umlaute im Pfad einer Java Applikation machen Probleme Allgemeine Java-Themen 13
M Probleme bei Eclipse wenn ich entpacke Allgemeine Java-Themen 15
D Regex Probleme Allgemeine Java-Themen 2
M Probleme jar datei. Allgemeine Java-Themen 2
L Vererbung Verständnis Probleme Vererbung Allgemeine Java-Themen 2
Dann07 Probleme mit OpenAL Allgemeine Java-Themen 0
V Threads Probleme beim Aufrufen von Methoden einer anderen Klasse (Threads) Allgemeine Java-Themen 14
V Compiler-Fehler Online Compiler Probleme Allgemeine Java-Themen 4
M Probleme mit Negamax-Algorithmus Allgemeine Java-Themen 29
M Probleme mit BigDecimal Allgemeine Java-Themen 1
T Probleme mit NumberFormat Allgemeine Java-Themen 5
J Probleme exe-Start mit Task Scheduler Allgemeine Java-Themen 1
B Input/Output Probleme beim Ausführen von Shell-Befehlen mit Java Allgemeine Java-Themen 28
J Probleme beim einbinden von Zip4j library Allgemeine Java-Themen 6
F Variablen Palindromzahl (Probleme mit Methode) Allgemeine Java-Themen 9
K Data Konverter - Probleme mit Byte[] Kodierung Allgemeine Java-Themen 3
T Probleme mit dem Pfad zum Propertie file Allgemeine Java-Themen 7
H Swing HashMap zu Tabelle macht mir Probleme Allgemeine Java-Themen 4
Neoline Interpreter-Fehler Probleme mit Arrays.toString Allgemeine Java-Themen 7
F SQLite mit Java / Probleme beim INSERT Befehl Allgemeine Java-Themen 4
J Erste Schritte Probleme mit der Hauptklasse Allgemeine Java-Themen 14
J Tetris Probleme bei Klassen Allgemeine Java-Themen 14
J MinMax VierGewinnt Probleme Allgemeine Java-Themen 22
J Probleme mit CodeCoverage und Lombok Equals Allgemeine Java-Themen 1
S Eclipse Probleme beim Implementieren / Ausführen von jUnit 5-Test Suites Allgemeine Java-Themen 14
R Snake Probleme Allgemeine Java-Themen 2
A Probleme beim Verstehen einer Aufgabenstellung Allgemeine Java-Themen 11
RalleYTN 3D Objekt Translation basierend auf Rotation (Probleme mit Z Rotation) Allgemeine Java-Themen 0
Bluedaishi Druck Probleme mit PDF dateien Allgemeine Java-Themen 4
G Ant Probleme bei einer Installation die Apache ant+ivy verwendet Allgemeine Java-Themen 14
E TableView Probleme Allgemeine Java-Themen 7
perlenfischer1984 Probleme beim Mocken Allgemeine Java-Themen 6
S Kaffemaschine Programmierung Probleme Allgemeine Java-Themen 2
K Threads Runtime und Process Probleme Allgemeine Java-Themen 3
S Probleme mit unterschiedlichen Java-Versionen (Mac OS X 10.11) Allgemeine Java-Themen 0
S Event Handling keyPressed()-Probleme Allgemeine Java-Themen 2
VfL_Freak Große und seltsame Probleme nach Java-Update auf V1.8.0_91 Allgemeine Java-Themen 3
P Probleme mit Grafik (Java) Allgemeine Java-Themen 6
R probleme beim starten von jar unter linux Allgemeine Java-Themen 2
H Probleme mit DAY_OF_WEEK Allgemeine Java-Themen 4
Arif Probleme mit NullPointerException Allgemeine Java-Themen 2
E Probleme mit nextInt() und Exception Allgemeine Java-Themen 35
Streeber Probleme mit AWT-EventQueue: ArrayList Elemente hinzufügen Allgemeine Java-Themen 1
D Performance-Probleme mit Joda-Time Allgemeine Java-Themen 3
M Probleme beim rechnen, bei Zahlen mit führenden Nullen. Allgemeine Java-Themen 7
RalleYTN Probleme mit Encrypting Allgemeine Java-Themen 10
M Probleme mit Schriftarten PDFBox Allgemeine Java-Themen 3
J Probleme mit der Java-Runtime Allgemeine Java-Themen 10
G Probleme mit BufferedWriter und URL Allgemeine Java-Themen 4
S Probleme mit meinem MacBook Pro DRINGEND HILFE erbeten! Allgemeine Java-Themen 17
Androbin Interpreter-Fehler Probleme mit Rekursion - StackOverflowError Allgemeine Java-Themen 8
E JCuda-0.6.5 Probleme beim ausführen der Datei Allgemeine Java-Themen 0
M Runtime.exec() verursacht auf manchen Systemen Probleme - Ursache unklar Allgemeine Java-Themen 2
W JNDI - LDAP - Probleme beim editieren von Usern Allgemeine Java-Themen 0
R DBUnit Performance Probleme Allgemeine Java-Themen 0
S Probleme mit Collection Allgemeine Java-Themen 7
L Probleme mit Jar Allgemeine Java-Themen 6
N Zahlensysteme umrechnen; Probleme beim Umwandeln Allgemeine Java-Themen 4
K OOP OOP Gui Spiel + Vererbungen Probleme durch Nichtwissen!! Allgemeine Java-Themen 1
F Java Native/Shared Library (.so) laden macht Probleme Allgemeine Java-Themen 3
J Synchronized Probleme Allgemeine Java-Themen 7
J Java Progressbar & Download Probleme Allgemeine Java-Themen 10
S Probleme mit dem filechooser Allgemeine Java-Themen 1
J Comperator Probleme Allgemeine Java-Themen 4
A Probleme beim auslesen von Quelltext (HTML) Allgemeine Java-Themen 5
S Probleme mit Webappplikation Allgemeine Java-Themen 5
L Plötzlich Probleme mit der JVM :( Allgemeine Java-Themen 6
S starke performance probleme des forums Allgemeine Java-Themen 10
K Probleme bei Berechnung der Komplexität Allgemeine Java-Themen 7
R JRE Ablaufdatum seit 7u10 - Probleme bei selbst ausgelieferter JRE bekannt? Allgemeine Java-Themen 3
H Reg Exp Probleme Allgemeine Java-Themen 5
M Classpath Probleme bei JAR Generierung Allgemeine Java-Themen 2
S Probleme mit JAVA-Installation Allgemeine Java-Themen 3
D Probleme bei for-Schleife Allgemeine Java-Themen 4
R Probleme mit Javadoc Allgemeine Java-Themen 2
G Gson Probleme Allgemeine Java-Themen 2
P KI für TicTacToe programmieren > Probleme Allgemeine Java-Themen 2
M Google App Engine macht Probleme Allgemeine Java-Themen 4
H Probleme mit finally-Block und close() Allgemeine Java-Themen 4
F 2d array probleme Allgemeine Java-Themen 2
M 3D-Grafik Probleme beim drehen von Objekten Allgemeine Java-Themen 9
T Interface Probleme Allgemeine Java-Themen 8
C Eclipse Probleme bei selbst erstelltem Algorithmus Allgemeine Java-Themen 2
M Probleme mit String in Label übergeben. Allgemeine Java-Themen 6
H MediaManager Fragen/Probleme Allgemeine Java-Themen 6
U Probleme mit Kopiervorgang Allgemeine Java-Themen 3
S Probleme beim Auslesen einer Liste Allgemeine Java-Themen 8

Ähnliche Java Themen

Neue Themen


Oben