kostenloser Webspace werbefrei: lima-city


array legt code lahm...

lima-cityForumProgrammiersprachenJava

  1. Autor dieses Themas

    nevesia

    nevesia hat kostenlosen Webspace.

    Ich habe mit Java (ME) angefangen eine Art "Eliza" also Programm, das mit einem redet, zu programmieren. Ich habe zwar keine Ahnung aber bisher hat alles ganz gut geklappt bis auf folgendes:
    Alles was nach definiere(); kommt, wird nicht ausgeführt (wie "break;"). Ich glaube das ist hier bei jeder Array-Deklaration so...
    Was soll ich tun, was mache ich falsch?

    import javax.microedition.lcdui.*;
    import java.util.*;
    import ch.aplu.gidlet.*;
    
    public class chat extends Gidlet {
        String[] woerter[];
        String[] antwort = new String[0];
        String du;
        String ich = "";
    
        public void main() {
            definiere(); //HIER
    
            while (true) {
    
                du = readString(ich.toLowerCase());
                ich = "";
    
                antworte();
            }
        }
        public void antworte(){
    
                for (int i1 = 0; i1 < woerter.length; i1++) {
                    for (int i2 = 0; i2 < woerter[i1].length; i2++) {
                            if (du.indexOf(woerter[i1][i2]) > -1) {
                            ich = antwort[i1];
                        }
                    }
                }
        }
        public void definiere(){
            woerter[0][0] = "hallo";
            woerter[0][1] = "hi";
            woerter[0][2] = "guten";
            woerter[0][3] = "moin";
            woerter[0][4] = "na";
            woerter[0][5] = "tag";
            antwort[0] = "na";
        }
    }
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Also erstmal würde ich doch gerne wissen, ob und wenn was für eine Fehlermeldung es gibt.
    Zweitens gibt es in Java keine dynamischen Arrays. Das heißt du kannst nicht wild zuweisen wie du es in definiere tust. Deshalb muss bei der Deklaration in der geschweiften Klammer hinter dem Typ oder Objektnamen auch eine Größe drin sein, die aber ganz normal ist. Für einen Array mit Index 0, 1, 2, 3, 4 muss also [5] verwendet werden.
    Bei deinem Beispiel sind woerter und antwort ganz einfach nichts, dass heißt sie verweisen auf keinen Speicher, demzufolge kann nichts zugewiesen werden.

    Beitrag zuletzt geändert: 9.8.2010 18:42:31 von reimann
  4. Autor dieses Themas

    nevesia

    nevesia hat kostenlosen Webspace.

    es gibt keine fehlermeldung - wie break eben, da gibt es ja auch keine...
    ohh, vielen dank für den tipp, wie gesagt bin ein ein neuling und ok dann [5]...

    String[][] woerter = new String[0][5];
        String[] antwort = new String[0];
        String du;
        String ich = "";
    eingefügt - nicht besser...
    was nun??


    EDIT:
    String[][] woerter = new String[1][6];
        String[] antwort = new String[1];
        String du;
        String ich = "";


    es klappt - yippiiiii!!

    Beitrag zuletzt geändert: 10.8.2010 11:28:53 von nevesia
  5. Naja das war nur ein Beispiel. In deinem Programm müsste es also so sein:
    String[] woerter = new String[1][6];
    String[] antwort = new String[1];

    Wenn du mit dynamischn Arrays arbeiten willst kannst du mal googlen. Es gibt da ein paar Ansätze. Wie etwa ArrayList. Da du nur mit Strings arbeitest, die von Haus aus Objekte sind und keine primitiven kannst du denke ich gut damit arbeiten.
    http://www.tutorials.de/java/174370-dynamische-arrays.html
    Ich weiß aber nicht inwieweit das in der ME vorhanden ist.

    Beitrag zuletzt geändert: 10.8.2010 11:27:49 von reimann
  6. Autor dieses Themas

    nevesia

    nevesia hat kostenlosen Webspace.

    vielen dank - zufällig grade selber drauf gekommen ;-) aber:
    statt
    String[] woerter = new String[1][6];
    lieber
    String[][] woerter = new String[1][6];


    trotzdem nochmal dankesehr
  7. Achso ja, habe leider eine Weile nicht mehr in Java programmiert.
    Musst halt nur darauf achten, dass du immer die richtige Größe nimmst, je nachdem wieviele Elemente du später hinzufügen willst.
  8. Arraylists lohnen sich vor allem dann, wenn du nicht weisst wieviel in sie reinkommt.
    Definieren tust du sie mit:

    ArrayList<Typ(zb. String)> name = new ArrayList<Typ>();

    per name.add(objekt); kannst du sachen hinten anfügen.
    per get(int i); oder get(object obj); kannst du sachen rausholen.
  9. Autor dieses Themas

    nevesia

    nevesia hat kostenlosen Webspace.

    okay dass ist auch eine möglichkeit - danke!
  10. Du kannst das Array übrigens auch schneller füllen:

    woerter[0] = String[]{"hallo", "hi", "..."}
  11. Autor dieses Themas

    nevesia

    nevesia hat kostenlosen Webspace.

    achsoo das ist ja super!
    ich kenn das nur von anderen sprachen.. jetzt weiß ich endlich wie (und dass) es mit java geht
    danke
  12. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!