Beiträge von kru

    Hallo miteinander:

    Ich hätte ein Angebot für alle Programmierfreunde:

    Ich hätte ein Programm zu schreiben. Dabei geht es um den maximalen Fluss in Netzwerken (Genaue Aufgabenstellung bei Interese).


    Wer Interesse hat das Programm zu schreiben, meldet sich bitte bei mir, entweder hier im info-forum oder unter

    tinakru@freenet.de

    Bezahlung ist selbstverständlich!

    Ich hab mich jetzt an Paulchens Grundgerüst gehalten.

    [/COLOR][/SIZE]

    Fehlermeldung: The local variable game may not have been initalisized[/align]

    Habs ja vor dem if deklariert. hier als beweis:

    [/align]
    [/SIZE]

    Also so: (Geht aber auch nicht)

    Fehlermeldung: The local variable game may not have been initalisized!

    Hi,

    @ java-Girl: Genau das geht ja nicht. Was soll ich denn dann für Parameter übergeben?
    Grid game;

    if(i.startsWith("n")){
    int j= ..
    int k = ...
    game = new GameOfLife(j,k)

    Dann beschwert er sich später:
    The local Variable game may not have been initalisized.

    Ich poste hier nochmal den ganzen Code.
    Zur Erläuterung:
    Grid ist ein Interface, das die GameOfLife implementiert.
    Der Zugriff darf nur über das Interface erfolgen!

    Die Problemstellen sind rot markiert.

    public static void main(String[] args) throws IOException {
    cons = new BufferedReader(new InputStreamReader(System.in));
    execute();

    } // void main

    private static void execute() throws IOException {
    boolean start = false;
    boolean quit = false;

    while (!quit) {

    System.out.print("gol> ");
    String input = cons.readLine(); // read one line

    if (input == null) { // no more input?

    break;
    }

    // split input on white spaces

    String[] tokens = input.trim().split(

    "\\s+");

    // Uppercase or lowercase letters should be no matter

    String i = tokens[0];
    i = i.toLowerCase();

    // First letter of the command is crucial. The command n.. x y

    // starts a new play with x rows and y columns

    if (i.startsWith("n")) {
    if (tokens.length != 3) { // expected length?

    System.

    out.println("Error! Bitte zwei Zahlen eingeben!");
    continue;
    }
    int j = Integer.parseInt(tokens[1]);
    int k = Integer.parseInt(tokens[2]);
    Grid game = new GameOfLife(j, k);

    start = true;
    }
    // eine zelle auf lebendig setzen

    if (i.startsWith("a") && start == true) {
    int m = Integer.parseInt(tokens[1]);
    int n = Integer.parseInt(tokens[2]);
    game.setAlive(m, n, true);
    }

    // Anzeigen des Spielfeldes

    if (i.startsWith("p") && start == true) {
    game.toString();
    }
    // Hillfe aufrufen

    if (i.startsWith("h")) {
    System.out.println("Hilfe");
    }
    // spiel beenden

    if (i.startsWith("q")) {
    quit = true;
    }

    else {
    System.out.println("Error! Bitte als erstes ein Spielfeld "

    +

    "anlegen, die Hilfe aufrufen oder das "

    +

    "Programm beenden!");
    }
    } // while


    }

    // void execute


    }

    // class Shell

    HI,

    die Vorschlag von Paulchen geht auch nicht.
    Ich hol mal etwas weiter aus.

    Der Spielablauf ist so:

    Als erstes muss man ein Spielfeld erzeugen, eben durch
    Grid game = new GameOfLife (j,k)
    j und k kann der Benutzer selbst eingeben durch das Kommando n j k

    Wenn ein Spielfeld angelegt ist (!nur dann!) kann man eine Zelle des Feldes auf lebendig setzen durch das Kommando a 2 4 zum Beispiel.

    Natürlich gibts noch weitere Funktionen, die hab ich aber nicht aufgelistet.

    Wichtig:

    Man kann das Spiel jederzeit beenden durch das kommando "q"
    Man kann jederzeit die Hilfe aufrufen durch "h"

    Diese beiden kommandos können evtl auch vor dem erzeugen eines neuen Feldes aufgerufen werden!

    Insgesamt also:

    Man kann die Befehle n, q, h jederzeit aufrufen. a aber nur, wenn Befehl n bereits ausgeführt wurde.

    Das ganze vor der while-Schleife zum machen geht ja auch nicht, weil da der Benutzer noch keine Eingaben machen kann.


    Ps. Hier handelt es sich um die Implementation des Spieles GameOfLife

    ja das hab ich auch verstanden.
    Aber ich bräuchte eine möglichkeit wie man das anders lösen könnte.
    ich hab wie oben schon erwähnt, schon zig-möglichkeiten probiert und auf nichts brauchbares gekommen.

    Es handelt sich insgesamt um einen Spielablauf:

    Beginnt das eingegebene Kommando mit " n "

    so wird ein neues Spielfeld angelegt:

    Grid game = new Game (j,k)


    Dann (wenn das Feld angelegt ist) kann man auf dem Feld (2-dim. Array) eine Zelle auf lebendig setzen mit

    game.setAlive(a,b)



    Mein Problem ist aber, dass "game" in den späteren Anweisungen nicht mehr sichtabar ist. Wahrscheinlich wegen der if-Anweisung.

    Die if-Unterscheidungen brauch ich aber, da noch mehr befehle kommen.
    z.b. wenn der erste Buchstabe ein "h" ist soll einen Hilfe aufgerufen werden etc..

    Hallo,

    ich habe ein Problem in meinem Java-Code.
    Ich erzeuge (siehe rote Schrift) ein neues Spielfeld. Grid ist ein Interface.

    Dann möchte ich auf die Methode setAlive(int j, int k) des Interfaces zugreifen.
    Diese soll die Zelle (j,k) im erzeugten Spielfeld auf lebendig setzen.
    Der Compiler beschwert sich aber, weil "game" nicht "visible" (sichtbar) ist.
    Liegt wahrscheinlich an der if- Anweisung.

    Ich hab das ganze schon x-mal umgeschrieben und komm nicht drauf wie ichs am besten machen könnte.
    Kann mir evtl jemand helfen
    Danke!





    private static void execute() throws IOException {
    boolean start = false;
    boolean quit = false;

    while (!quit) {
    System.out.print("gol> ");
    String input = cons.readLine(); // read one line

    // split input on white spaces

    String[] tokens = input.trim().split(

    "\\s+");

    // Uppercase or lowercase letters should be no matter

    String i = tokens[0];
    i = i.toLowerCase();

    // First letter of the command is equal. The command n.. x y

    // starts a new play with x rows and y columns

    if (i.startsWith("n")) {
    if (tokens.length != 3) { // expected length?

    System.

    out.println("Error! Bitte zwei Zahlen eingeben!");
    continue;
    }

    // The input has to be consist of two integers

    int j = Integer.parseInt(tokens[1]);
    int k = Integer.parseInt(tokens[2]);
    Grid game = new GameOfLife(j,k);

    start = true;

    }
    else if (i.startsWith("a") && start == true){
    int j = Integer.parseInt(tokens[1]);
    int k = Integer.parseInt(tokens[2]);
    game.setAlive(j,k);


    }

    Danke, das hab ich verstanden. Das passt jetzt auch, allerdings hab ich noch ne Stell in meinem Code, wo der gleiche Fehler angezeigt wird. Ich weiß aber nicht, wo ich da die Generics einfügen sollte:
    Die Fehlermeldung zeigt er mir wieder bei der For-schleife an.

    public void resize(int cellCols, int cellRows) {
    field = new Field(cellCols, cellRows);
    LinkedHashSet newPopulation = new LinkedHashSet();
    newPopulation.addAll(population);
    for (Cell cell : population) {
    if (cell.getColumn() < cellCols && cell.getRow() < cellRows) {

    field.setAlive(cell.getColumn(), cell.getRow(), true);
    } else {
    newPopulation.remove(cell);
    }
    }
    population = newPopulation;


    }

    Hallo
    ich haben ein Problem mit dem Casten
    Eclipse zeigt mir folgenden Fehler an:

    "Type missmatch: Cannot convert from element type Object to Cell.

    Cell ist bei mir eine eigene Klasse.
    Der Fehler taucht bei der for-Schleife auf. Warum? Wie kann ich das lösen?

    Danke schon mal

    lg Tina

    static

    Cell getEqualCell(LinkedHashSet set, Cell cell) {
    for (Cell iter : set) {
    if (iter.equals(cell)) {
    return iter;
    }
    }
    return null;


    }