im gettingt the Exception in thread "AWT-EventQueue-1" java.lang.NullPointerException -


this question has answer here:

console says:

exception in thread "awt-eventqueue-1" java.lang.nullpointerexception
@ funk.versuch2$fparser.pruefe(versuch2.java:148)
@ funk.plotter2.werteaus(plotter2.java:106)
@ funk.plotter2.actionperformed(plotter2.java:80)
@ java.awt.button.processactionevent(unknown source)
@ java.awt.button.processevent(unknown source)
@ java.awt.component.dispatcheventimpl(unknown source)
@ java.awt.component.dispatchevent(unknown source)
@ java.awt.eventqueue.dispatcheventimpl(unknown source)
@ java.awt.eventqueue.access$500(unknown source)
@ java.awt.eventqueue$3.run(unknown source)
@ java.awt.eventqueue$3.run(unknown source)
@ java.security.accesscontroller.doprivileged(native method)
@ java.security.protectiondomain$1.dointersectionprivilege(unknown source)
@ java.security.protectiondomain$1.dointersectionprivilege(unknown source)
@ java.awt.eventqueue$4.run(unknown source)
@ java.awt.eventqueue$4.run(unknown source)
@ java.security.accesscontroller.doprivileged(native method)
@ java.security.protectiondomain$1.dointersectionprivilege(unknown source)
@ java.awt.eventqueue.dispatchevent(unknown source)
@ java.awt.eventdispatchthread.pumponeeventforfilters(unknown source)
@ java.awt.eventdispatchthread.pumpeventsforfilter(unknown source)
@ java.awt.eventdispatchthread.pumpeventsforhierarchy(unknown source)
@ java.awt.eventdispatchthread.pumpevents(unknown source)
@ java.awt.eventdispatchthread.pumpevents(unknown source)
@ java.awt.eventdispatchthread.run(unknown source)

it show me lines go 0 not able fix it. syntax pretty new java wanted try out function parser working doesn't draw function enter in textfield.

package funk;  import funk.versuch2.fparser; import funk.versuch2.frechner;  import java.applet.applet; import java.awt.button; import java.awt.color; import java.awt.font; import java.awt.graphics; import java.awt.label; import java.awt.panel; import java.awt.textfield; import java.awt.event.actionevent; import java.awt.event.actionlistener; import java.awt.event.keyevent; import java.awt.event.keylistener;  public class plotter2 extends applet implements actionlistener,keylistener {     int breite, hoehe; //maße des applets     panel poben; //komponenten     button bstart;     textfield teingabe;     label lfehler;     int x0, y0, dx, dy; //bestimmende größen für das koordinatensystem     string eingabe; //das wird der funktionsterm     boolean eingabeok = false;     boolean ersterpunkt = true;     fparser p = new fparser(); //der syntaxchecker     frechner r = new frechner(); // der rechner      public void init() {         breite = getbounds().width; //appletmaße bestimmen         hoehe = getbounds().height;         poben = new panel(); //komponenten erzeugen         poben.setbounds(0, 0, breite - 1, 60);         poben.setlayout(null);         add(poben);         bstart = new button("los!");         bstart.setbounds(120, 2, 60, 20);         bstart.addactionlistener(this);         poben.add(bstart);         teingabe = new textfield("y=");         teingabe.setbounds(2, 2, breite - 60, 22);         teingabe.addkeylistener(this);         teingabe.setfont(new font("couruier", 1, 12));         poben.add(teingabe);         lfehler = new label("ok");         lfehler.setbounds(55, 25, breite - 60, 20);         poben.add(lfehler);         x0 = 4; //mittelpunkte des koordinatensystems und skalierungsfaktoren festlegen         y0 = (int) math.round((hoehe - 60) / 2) + 60;         dx = 100;         dy = 50;     }      //zuerst einmal muss ein leeres koordinatensystem gezeichnet werden:     private void anfangsbild(graphics g) {         g.setcolor(color.white); //bild löschen         g.fillrect(1, 61, breite - 2, hoehe - 62);         g.setcolor(color.black);         g.drawrect(1, 61, breite - 2, hoehe - 62);         g.drawline(1, y0, breite - 1, y0); //achsen zeichnen         g.drawline(x0, 61, x0, hoehe - 1);         (int = 1; <= (int) math.round(breite / dx); i++) //x-achse skalieren         {             g.drawline(x0 - dx * i, y0 - 2, x0 - dx * i, y0 + 2);             g.drawline(x0 + dx * i, y0 - 2, x0 + dx * i, y0 + 2);         }         (int = 1; <= (int) math.round(y0 / dy); i++) //y-achse skalieren         {             g.drawline(x0 - 2, y0 + dy * i, x0 + 2, y0 + dy * i);             g.drawline(x0 - 2, y0 - dy * i, x0 + 2, y0 - dy * i);         }     }      public void actionperformed(actionevent e) {         werteaus();     }      public void keyreleased(keyevent e) {         if (e.getkeycode() == 10) werteaus();     }      private void werteaus() {         eingabe = teingabe.gettext();         boolean allesok = true;         try //ggf. “y=” abschneiden         {             if (eingabe.substring(0, 2).equals("y="))                 eingabe = eingabe.substring(2);         } catch (exception ex) {             lfehler.settext("fehler: eingabe zu kurz!");             allesok = false;         }         if (eingabe.length() > 0) //ggf. semikolon anhängen         {             if (!(eingabe.charat(eingabe.length() - 1) == ';'))                 eingabe = eingabe + ";";         } else allesok = false;         allesok = allesok && fparser.pruefe(eingabe); //syntaxcheck         if (allesok) {             lfehler.settext("eingabe ok --> es wird gezeichnet");             eingabeok = true;             repaint(); //graph zeichnen             lfehler.settext("ok");         } else {             lfehler.settext("fehler");             eingabeok = false;         }     }      public void paint(graphics g) {         int yalt = 0, yneu;         anfangsbild(g);         if (eingabeok) {             double x, y;             (int = 0; < breite - 1; i++) //alle horizontalen bildschirmkoordinaten durchlaufen             {                 x = 1.0 * (i - x0) / dx; //x-wert bestimmen                 y = r.berechne(eingabe, x); //y-wert berechnen                 if (!r.fehler) {                     if (ersterpunkt) {                         yalt = y0 - (int) math.round(y * dy); //position merken                         ersterpunkt = false;                     } else {                         yneu = y0 - (int) math.round(y * dy); //linie zeichnen                         if ((math.abs(yalt) < 2 * hoehe) && (math.abs(yneu) < 2 * hoehe))                             g.drawline(i - 1, yalt, i, yneu);                         yalt = yneu;                     }                 } else ersterpunkt = true;             }         }     }      @override     public void keypressed(keyevent e) {         // todo auto-generated method stub      }      @override     public void keytyped(keyevent e) {         // todo auto-generated method stub      } } 

the other one:

package funk;  import java.applet.applet; import java.awt.button; import java.awt.font; import java.awt.label; import java.awt.textfield; import java.awt.event.actionevent; import java.awt.event.actionlistener;  public class versuch2 extends applet implements actionlistener {     static textfield teingabe;     label lanzeige;      public void init() {         setsize(800, 400);         setlayout(null);         button bneu = new button("neu"); // ein button für den neustart         bneu.setbounds(2, 2, 50, 20);         bneu.addactionlistener(this);         add(bneu);         button barbeite = new button("analysiere"); // und einer für ersetzungsvorgänge         barbeite.setbounds(55, 2, 60, 20);         barbeite.addactionlistener(this);         add(barbeite);         teingabe = new textfield(""); // zum eingeben eines wortes         teingabe.setbounds(2, 30, 790, 25);         teingabe.setfont(new font("courier", 1, 16));         add(teingabe);         lanzeige = new label("geben sie eine variablenvereinbarung ein!");         lanzeige.setbounds(2, 60, 790, 20);         add(lanzeige);     }      public void actionperformed(actionevent e) {         if (e.getactioncommand() == "neu")             neu();         else if (e.getactioncommand() == "analysiere")             arbeite();     }      private void neu() {         teingabe.settext("");         lanzeige.settext("geben sie eine variablenvereinbarung ein!");     }      private void arbeite() {         string s = teingabe.gettext();         boolean ok = fparser.pruefe(s);     }       static class fparser {         public static boolean pruefe(string s) // s wird überprüft         {             char c, d; // die ersten beiden zeichen             boolean ok = true; // das ergebnis             if (s.length() < 2)                 ok = false;             while ((s.length() > 1) && ok) {                 c = s.charat(0); // erstes zeichen abtrennen                 s = s.substring(1);                 d = s.charat(0); // zweites zeichen vorsorglich speichern                 switch (c) {                     case '+': {                         s = "a" + s;                         break;                     }                     case '-': {                         s = "a" + s;                         break;                     }                     case '0': {                         s = "b" + s;                         break;                     }                     case '1': {                         s = "b" + s;                         break;                     }                     case '2': {                         s = "b" + s;                         break;                     }                     case '3': {                         s = "b" + s;                         break;                     }                     case '4': {                         s = "b" + s;                         break;                     }                     case '5': {                         s = "b" + s;                         break;                     }                     case '6': {                         s = "b" + s;                         break;                     }                     case '7': {                         s = "b" + s;                         break;                     }                     case '8': {                         s = "b" + s;                         break;                     }                     case '9': {                         s = "b" + s;                         break;                     }                     case 'x': {                         s = "e" + s;                         break;                     }                     case 'a': {                         s = s.substring(1); // jetzt kann das zweite zeichen auch weg                         if (d == 'x')                             s = "e" + s;                         else if ((d >= '0') && (d <= '9'))                             s = "b" + s;                         else                             ok = false;                         break;                     }                     case 'b': {                         s = s.substring(1); // jetzt kann das zweite zeichen auch weg                         if ((d == '+') || (d == '-'))                             s = "a" + s;                         else if (d == 'x')                             s = "e" + s;                         else if ((d >= '0') && (d <= '9'))                             s = "b" + s;                         else if (d == ';')                             s = "s" + s;                         else                             ok = false;                         break;                     }                     case 'e': {                         s = s.substring(1); // jetzt kann das zweite zeichen auch weg                         if ((d == '+') || (d == '-'))                             s = "a" + s;                         else if (d == '^')                             s = "f" + s;                         else if (d == ';')                             s = "s" + s;                         else                             ok = false;                         break;                     }                     case 'f': {                         s = s.substring(1); // jetzt kann das zweite zeichen auch weg                         if ((d == '+') || (d == '-'))                             s = "g" + s;                         else if ((d >= '0') && (d <= '9'))                             s = "h" + s;                         else if (d == '^')                             s = "f" + s;                         else                             ok = false;                         break;                     }                     case 'g': {                         s = s.substring(1); // jetzt kann das zweite zeichen auch weg                         if ((d >= '0') && (d <= '9'))                             s = "h" + s;                         else                             ok = false;                         break;                     }                     case 'h': {                         s = s.substring(1); // jetzt kann das zweite zeichen auch weg                         if ((d == '+') || (d == '-'))                             s = "a" + s;                         else if (d == ';')                             s = "s" + s;                         else if ((d >= '0') && (d <= '9'))                             s = "h" + s;                         else                             ok = false;                         break;                     }                 }             }              string s1 = teingabe.gettext();             if (ok == true) {                 teingabe.settext("richtig--> " + s1);             } else {                 teingabe.settext("error--> " + s1);             }             return ok && (s1.equals("s"));         }     }      static class frechner {         boolean fehler = false;          public double berechne(string s, double x) {             char c;             double y = 0, ergebnis = 0;             int vorzeichen = 1; // vorzeichen             double zahl = 1;             double exponent = 1;             while ((s.length() > 1) && !fehler) {                 // zahl zusammensuchen                 c = s.charat(0);                 s = s.substring(1); // erstes zeichen abschneiden                 vorzeichen = 1;                 zahl = 1;                 if (c == '-') { // ggf. vorzeichen bestimmen                     vorzeichen = -1;                     c = s.charat(0);                     s = s.substring(1); // nächstes zeichen abschneiden                 } else if (c == '+') {                     c = s.charat(0);                     s = s.substring(1); // nächstes zeichen abschneiden                 }                 if ((c >= '0') && (c <= '9')) { // kommt ´ne zahl?                     zahl = (int) c - (int) '0';                     c = s.charat(0);                     s = s.substring(1); // nächstes zeichen abschneiden                     while ((c >= '0') && (c <= '9')) {                         zahl = 10 * zahl + (int) c - (int) '0';                         c = s.charat(0);                         s = s.substring(1); // nächstes zeichen abschneiden                     }                 }                 zahl = vorzeichen * zahl; // das ist doch schon mal was!                 if ((c == '+') || (c == '-') || (c == ';')) { // jetzt kommt ein neuer summand                     ergebnis = ergebnis + zahl;                     s = "" + c + s; // vorzeichen wieder vorne anhängen                 }                 if (c == 'x') { // der parameter wird benutzt                     // exponent suchen                     c = s.charat(0);                     s = s.substring(1); // <x> abschneiden                     if ((c == ';') || (c == '+') || (c == '-')) { // x^1                         ergebnis = ergebnis + zahl * x;                         s = "" + c + s;                     } else {                         c = s.charat(0);                         s = s.substring(1); // <^> abschneiden                         vorzeichen = 1;                         exponent = 1;                         if (c == '-') {                             vorzeichen = -1;                             c = s.charat(0);                             s = s.substring(1); // nächstes zeichen abschneiden                         } else if (c == '+') {                             c = s.charat(0);                             s = s.substring(1); // nächstes zeichen abschneiden                         }                         if ((c >= '0') && (c <= '9')) {                             exponent = (int) c - (int) '0';                             c = s.charat(0);                             s = s.substring(1); // nächstes zeichen abschneiden                             while ((c >= '0') && (c <= '9')) {                                 exponent = 10 * exponent + (int) c - (int) '0';                                 c = s.charat(0);                                 s = s.substring(1); // nächstes zeichen abschneiden                             }                             exponent = vorzeichen * exponent;                             s = "" + c + s; // vorzeichen wieder vorne anhängen                             fehler = false;                             try { // wert des summanden berechnen                                 y = zahl * math.exp(exponent * math.log(x));                                 ergebnis = ergebnis + y;                             } catch (exception ex) {                                 fehler = true;                             }                         }                     }                 }             }             return ergebnis;         }     } } 

and relevant lines are: "versuch2"

string s1 = teingabe.gettext(); if (ok == true) {     teingabe.settext("richtig--> " + s1); } else {     teingabe.settext("error--> " + s1); } 

"plotter2"

    if (!(eingabe.charat(eingabe.length()-1)==';'))         eingabe = eingabe + ";"; } else     allesok = false; allesok = allesok && fparser.pruefe(eingabe); //syntaxcheck 

"plotter2"

public void actionperformed(actionevent e) {     werteaus(); }  public void keyreleased(keyevent e) {     if (e.getkeycode() == 10)         werteaus(); } 

the teingabe field of versuch2 class (class names should start in uppercase btw.) isn't initialized. init() method of versuch2 class isn't called because isn't start point of applet, applet plotter2 (again, class names should start upper case). means versuch2.teingabe still null , code teingabe.gettext(); fail.

you should consider remove code teingabe pruefe() method.


Comments

Popular posts from this blog

angularjs - ADAL JS Angular- WebAPI add a new role claim to the token -

php - CakePHP HttpSockets send array of paramms -

node.js - Using Node without global install -