» Poradna » Zpět na dotaz

j2me chyba pri vytváraní instancie vlastnej triedy datum

mesiarm  |  5. 10. 2012 22:32:19  |  Odpovědí: 0

som zaciatocnik a snazim sa vytvorit aplikaciu na vypis poctu dni od narodenia v java - micro edition. Mám problém s vytvorením instancie vlastnej triedy datum. Annotation: An unexpected internal exception occured in debug interface layer. Please submit this to your JVM vendor. Annotation: An unexpected internal exception occured in debug interface layer. Please submit this to your JVM vendor. An unexpected internal exception occured in debug interface layer. Please submit this to your JVM vendor. An unexpected internal exception occured in debug interface layer. Please submit this to your JVM vendor. Caused: com.sun.jdi.InternalException: Unexpected JDWP Error: 21 at com.sun.tools.jdi.JDWPException.toJDIException(JDWPException.java:65) at com.sun.tools.jdi.ReferenceTypeImpl.getInterfaces(ReferenceTypeImpl.java:572) at com.sun.tools.jdi.ClassTypeImpl.interfaces(ClassTypeImpl.java:70) at com.sun.tools.jdi.ClassTypeImpl.addVisibleMethods(ClassTypeImpl.java:392) at com.sun.tools.jdi.ReferenceTypeImpl.visibleMethods(ReferenceTypeImpl.java:526) at com.sun.tools.jdi.ClassTypeImpl.concreteMethodByName(ClassTypeImpl.java:302) [catch] at org.netbeans.modules.debugger.jpda.jdi.ClassTypeWrapper.concreteMethodByName(ClassTypeWrapper.java:156) at org.netbeans.modules.debugger.jpda.models.AbstractObjectVariable.getToStringValue(AbstractObjectVariable.java:483) at org.netbeans.modules.debugger.jpda.models.AbstractObjectVariable.getToStringValue(AbstractObjectVariable.java:445) at org.netbeans.modules.debugger.jpda.models.AbstractObjectVariable.getToStringValue(AbstractObjectVariable.java:411) at org.netbeans.modules.debugger.jpda.models.WatchesModel$JPDAWatchEvaluating.getToStringValue(WatchesModel.java:379) at org.netbeans.modules.debugger.jpda.ui.models.WatchesNodeModelFilter.getShortDescriptionSynch(WatchesNodeModelFilter.java:133) at org.netbeans.modules.debugger.jpda.ui.models.VariablesNodeModel$1.run(VariablesNodeModel.java:263) at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:1452) at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:2032) KOD: package Datum; import java.util.Calendar; import java.util.Date; import javax.microedition.lcdui.*; import javax.microedition.midlet.MIDlet; import javax.microedition.midlet.MIDletStateChangeException; public class Midlet extends MIDlet implements CommandListener { Display disp; Form setup; Form result; TextField rok ; TextField mesiac ; TextField den ; Command vypocet; Command koniec; Command spat; StringItem pozdrav; StringItem dnesny_datum; StringItem vysledok; StringItem ss; datum Datum; datum teraz; datum narod; datum de; Date d_date; static final int[] dni= {31,28,31,30,31,30,31,31,30,31,30,31}; private class datum { int den; int mesiac; int rok; public datum() { } public datum(int d, int m, int r) { den = d; mesiac = m; rok = r; } public datum(String d, String m, String r) {den = Integer.parseInt(d); mesiac = Integer.parseInt(m); rok = Integer.parseInt(r); } } public datum d_datum() { Calendar calendar = Calendar.getInstance(); calendar.setTime(d_date); datum vystup; int ye = calendar.get(Calendar.YEAR); int mo = calendar.get(Calendar.MONTH); int da = calendar.get(Calendar.DAY_OF_MONTH); vystup = new datum (ye,mo,da); return vystup; } public Midlet() { d_date = new Date(); pozdrav = new StringItem("Zadaj datum narodenia: ", ""); vypocet = new Command("Vypocitaj!", Command.SCREEN, 2); spat = new Command("Spat", Command.SCREEN, 3); koniec = new Command("Zavri", Command.SCREEN, 1); rok = new TextField("Rok:", "", 4, TextField.NUMERIC); mesiac = new TextField("Mesiac:", "", 2, TextField.NUMERIC); den = new TextField("Den:", "", 20, TextField.NUMERIC); datum pomdat = new datum(); int d = d_datum().den; int m = d_datum().mesiac; int r = d_datum().rok; setup = new Form("Zadaj datum narodenia"); dnesny_datum = new StringItem("", "Dnes je:"+Integer.toString(d)+"."+Integer.toString(m)+"."+Integer.toString(r)); setup.append(dnesny_datum); setup.append(pozdrav); setup.append(den); setup.append(mesiac); setup.append(rok); setup.addCommand(vypocet); setup.addCommand(koniec); result = new Form("VYSLEDOK"); } public void startApp() { disp = Display.getDisplay(this); setup.setCommandListener(this); disp.setCurrent(setup); } public void commandAction(Command c, Displayable d) { de = new datum("22","8","1994"); //testovaci datum - tuto nastane chyba, pri debugovani sa priradi chyb hlaska if (c== spat) { disp.setCurrent(setup); } if(c == koniec) { notifyDestroyed(); } if(c == vypocet) { ss = new StringItem("",rok.getString()+mesiac.getString()+rok.getString()); if (validate (de)) { String vysledok = vypocitaj (Integer.parseInt(rok.getString()),Integer.parseInt(mesiac.getString()),Integer.parseInt(den.getString())); result.append(vysledok); result.addCommand(koniec); result.setCommandListener(this); disp.setCurrent(result); } else {String vysledok = "Chyba zadania datumu"; result.append(vysledok); result.addCommand(spat); result.addCommand(koniec); result.setCommandListener(this); disp.setCurrent(result); } }} private boolean priestupny(int rok) { if ((( rok % 400 == 0) || (rok % 100 != 0)) && (rok % 4 == 0) ) { return true; } else { return false; } } private boolean validate(datum dat) { if ((dat.den >= 1) && (dat.den <=31) && (dat.mesiac >= 1) && (dat.mesiac <=12) && (dat.rok >=1) && (dat.rok < 2012) && (dat.mesiac <= dni[dat.mesiac])) { return true; } else { return false; } } private String vypocitaj(int rok, int mesiac, int den) { String vysledok; int rokdni = 0; int mesdni = 0; datum narod; narod = new datum (rok, mesiac, den); teraz = d_datum(); for (int i = teraz.rok-1; i <= narod.rok+1; i--) { if (priestupny (i)) {rokdni+= 366; } else {rokdni+= 365;} } if ((priestupny (narod.rok)) && (narod.mesiac<=3)) { mesdni++; } if ((priestupny (teraz.rok)) &&(teraz.mesiac>=1)) { mesdni++; } for (int i = narod.mesiac+1;i<= 12; i++) {mesdni += dni[i];} for (int i = 1; i<= teraz.mesiac-1; i++) {mesdni += dni[i];} int value = rokdni+mesdni+teraz.den+ dni[narod.mesiac]-narod.den; vysledok = ("Uz" + value+ "dni ste na tomto svete"); return vysledok; } protected void destroyApp(boolean arg0) throws MIDletStateChangeException { // TODO Auto-generated method stub } protected void pauseApp() { // TODO Auto-generated method stub } } Pomôže mi niekto s tým prosím?

Jméno:
 

E-mail (nepovinné, adresa bude v zabezpečené podobě zobrazena u přezdívky):

:-D :-)) :-) ;-) :-P :-| :-/ :-( 3-[ :-O B-]

Pravidla diskuzí v Poradně webu Živě.cz

Zasláním příspěvku do Poradny souhlasíte s těmito pravidly:

  • Podmínky užívání služby informační společnosti
  • Informace o zpracování osobních údajů
  • Příspěvky se musí týkat tématu otázky.
  • Příspěvky nesmí obsahovat vulgární výrazy a slovní útoky na jiné osoby. Příspěvky nesmí poškozovat web Živě.cz ani jeho provozovatele.
  • Je zakázáno vkládat do příspěvků odkazy na stránky nabízející obsah porušující autorská a jiná práva.
  • Příspěvky nelze využívat k propagaci.
  • Příspěvky, které porušují pravidla diskuzí, budou odstraněny. Případně budou upraveny tak, aby neporušovaly pravidla diskuzí. V textu bude následně uvedeno, že příspěvky byly ze strany moderátorů upraveny.
  • Právo moderovat Poradnu mají pouze zástupci vybraní redakcí Živě.cz. Základní kontrola příspěvku probíhá ještě před jeho zveřejněním.
  • Živě.cz je soukromý web a provozovatel má při řešení sporů, které se týkají příspěvků v Poradně, vždy konečné slovo.

Kdy vám můžeme smazat příspěvek?

  • Když budete vulgární.
  • Když budete slovně útočit na ostatní.
  • Když se nebudete držet tématu dotazu.
  • Když budete poradnu zneužívat pro reklamu.
  • Když záměrně zneužijete cizí přezdívku.
  • Když budete porušovat zákony.
  • A když budete na takové příspěvky reagovat, protože se vždy mažou včetně odpovědí ve stromu.