Computerhilfen.de Logo
Forum
Tipps
News
Frage stellen

Java -- Einen Akzeptor programmieren

[letzte Beiträge dieses Threads lesen pls]

Hi
ich soll einen Akzeptor mit programmieren und werd im Verlauf dabei wohl ein paar Fragen haben, die ich immer hier in den Thread mit aufnehmen. :)
Der Akzeptor soll mathematische Funktionen akzeptieren, die nach üblichem Muster eingegeben sind.. z.B.: (23+4)*89/2^5


Bisher liest das Applet auf Knopfdruck den Text als String ein, gibt jedes zeichen einzeln in ein char-Array.
Dann wird eine Funkiton (void) startAkzeptor() ausgeführt.




Wie erkenne ich, ob ich es mit einer Zahl zu tun habe?
 

Zitat
   void Zahl(){
      try{
         int i=cZeichen[iZahl];        /* cZeichen ist ein char-array, in dem sich die Buchstaben des eingelesenen Textes befinden */
         Akzeptor=true;   /* Akzeptor ist eine booleansche Variable */
      }catch (Exception e){Akzeptor=false;}
   }

das hab ich mir ausgedacht^^
funktioniet es hiermit?
..leider zeigt mein akzeptor bisher am ende immer true an, egal was ich eingebe..

Gz Tobi 
« Letzte Änderung: 03.05.07, 15:19:02 von SLik »

Antworten zu Java -- Einen Akzeptor programmieren:

Grüße,

ich würde den String belassen und mit folgendem weiter machen:

zeichen = deinString.chartAt(i);

switch(zeichen){

case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
.
.
.
case '9':
     Akzeptor = true;
     break;
default:
     //Keine zahl
 

stimmt. mit switch geht es relativ einfach. :)
Danke

Ich finde meinen Fehler einfach nicht..
Mein Akzeptor gibt einfach IMMER true aus..

 


void startAkzeptor(){

Akzeptor=true;
iZustand=0;
if (iLaenge>0){
for(int i=0; i==iLaenge; i++){
iZahl=i;
if (Akzeptor=true){
Akzeptor=false;

switch (iZustand){
case 0: Zahl(); Klammerauf(); break; //Operator
case 1: Zahl(); Operator(); Klammerzu();break; //Zahl
case 2: Zahl(); break;          //Klammerauf
case 3: Operator();break; //Klammerzu
}

} else
{LAusgabe.setText("Fehler bei Zeichen "+i+"."); break;}

}
} else {LAusgabe.setText("Funktion eingeben!");}
if (iZustand==(0|2)){Akzeptor=false;}
LAusgabe.setText(Akzeptor.toString());

}

das ist die Methode des Akzeptors. In den Methoden Zahl(), Operator() Klammerauf() und Klammerzu() wird nur überprüft, ob es sich bei dem jeweiligen Zeichen um das jeweilige handelt. Falls ja wird die booleansche Variable Akteptor=true gesetzt.

Falls nicht sollte normal die Schleife unterbrochen werden und Akzeptor=false stehen.

Gz Tobi 
« Letzte Änderung: 29.04.07, 19:49:47 von SLik »

selbst wenn ich den akzeptor als ganzes rauslasse und nur eine einfache if-Funktion verwende gibt er mir nichts richtiges aus  :(

Zitat
      public void actionPerformed(ActionEvent event){
                                          
            if (event.getSource()==BPruefen){                                             
               Akzeptor=false;
               if (TFEingabe.getText()=="a"){Akzeptor=true;}
               LAusgabe.setText(Akzeptor.toString());
            }

wenn ich ein a eingebe ins Textfeld gibt er trotzdem false aus.. WIESO??!  ??? ???


Helft mir bitte.. ich verzweifle noch daran

Gz Tobi

Dein iZustand ist immer 0

Und die for-Schleife wird nur durchlaufen wenn iLaenge 0 ist
Probier doch mal i<iLaenge

im zweiten post: ich vermute mal dass getText() nen String gibt. Dann sollte man equals() zum Vergleichen nehmen, also etwa so:
TFEingabe.getText().equals("a")

vielen Dank  :D
mit equals kann ich endlich vergleichen^^

und in der for-Schleife hatte ich n verständnisproblem :)
dachte es würde gezählt, bis der wert von iLaenge erreicht ist.
Jetzt funktioniert es^^

Hab noch n paar fehlerchen drin. aber das is jetzt schonmal n rieeeesen fortschritt :) danke!

ich schreib nachher nochmal, wenn ich die fehler nich allein rauskriege :)


Grüße
Tobi


PS: iZustand wird in den Methoden Zahl(), Operator(), etc verändert :)

« Letzte Änderung: 03.05.07, 18:27:26 von SLik »

Danke. Das Programm läuft jetzt soweit. :)

Allerdings muss ich dazu noch nen gerichteten Graphen entwerfen :-\

Ich bin schon seit 2 tagen am malen, wie ich das am besten machen könnte.. jedoch bleibt immer das Problem mit den Klammern.
Wie kann ich denn sowas am besten aufzeichnen, dass eine Klammer immer wieder geschlossen wird bzw nur geschlossen werden kann, wenn auch eine geöffnet wurde ???

Theoretische Informatik is doof..
Hat jemand bitte einen Tipp für mich?

Danke
_____________
weitere Frage:
wie verwende ich gleichzeitig nen ActionListener und nen KeyListener? ich kann ja nur ein mal
...implements xxxListener() {...}
hinter die public class schreiben
_____________


Gz
Tobi 

« Letzte Änderung: 05.05.07, 12:40:55 von SLik »

Klar kann man mehrere interfaces haben:
public class foo implements KeyListener, ActionListener {...}
sollte eigentlich gehen

Danke! gut zu wissen :)

bin jetzt ziemlich fertig^^


melde mich bei weiteren problemen
Gz
Tobi

So..und wieder ein neues Problem..

ich möchte ein Bild in ein Panel machen. Je nachdem Wie die Variable iZustand ist soll bild 1 bis 5 dort zu sehen sein --jeweils für etwa 2 sekunden.

bisher habe ich es mit

Image img= getToolkit().getImage("bild1.gif");
Graphics g=getGraphics();
g.drawImage(img, 100, 150, Panel2);

..probiert. Es erscheint keine Fehlermeldung. allerdings wird auch kein Bild angezeigt.

[[[Das zweite Problem wäre das kurze Stoppen des Applets. Kann sleep() auch einfach so verwendet werden oder muss ich dazu alles in einen Thread auslagern?]]]
--- Habe den Prozess in einen Thread ausgelagert und es geht einwandfrei :) ---
was noch fehlt ist das Problem oben mit den bildern
zudem weiß ich nich, wie ich die schrift(-größe) in einem Label ändere.


Hoffe auf schnelle Hilfe.
Danke
Gz
Tobi 

« Letzte Änderung: 12.05.07, 15:19:21 von SLik »

Bin schonwieder am verzweifeln..

Ich hab ne NullPointerException und die Bilder öffnen sich net. Vielleicht hängt das miteinander zusammen..kA
ich finde einfach keinen fehler. ???

in eclipse kann ich das Programm ausführen, nur die Bilder werden nicht gezeigt. Im browser heißt es nur
"Fehler beim Laden des Java-Applets.."
Im Browser

ich blick einfach nich durch..


Bin soo am verzweifeln.. bitte hilf mir jemand beim finden von dem fiesen bug.. :-\

Image img  = getToolkit().getImage("automat.gif");
Graphics g1=getGraphics();
g1.drawImage(img, 10, 40,  this);

warum funktioniert das nich..? :'(
 
« Letzte Änderung: 13.05.07, 01:14:28 von SLik »

Hmm, mit sonem kram kenn ich mich mal grad gar nicht aus, aber was macht denn getGraphics()? Bringt es was, img.getGraphics() zu nehmen?


« Borland c++ builder 6.exe - Datei mit Turbo Pascal 7 erzeugen »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!

Fremdwörter? Erklärungen im Lexikon!
Browser Verlauf
Der Browser-Verlauf zeigt die zuletzt im Browser besuchten Webseiten an: So hat man leicht Zugriff auf die Seiten, die man schon einmal angesehen hatte. Je nach Browser h...

Applet
Siehe Java. ...

Hypertext
Hypertext ( zu Deutsch: Übertext) ein ein von dem Informatiker Theodore L. Nelson in den sechziger Jahren geprägter Begriff für Text, der dreidimensional g...