phnx85 Skrevet 15. september 2004 Del Skrevet 15. september 2004 Jeg holder på med et lite script som skal ha meny alternativ i begynnelsen. Man skal kunne trykke 1, 2 eller 3. 1 starter tomme til cm konverteren, 2 starter sekund til time konverteren og 3 avslutter programmet. Problemet jeg får når jeg kompilerer er at "if" som skal starte de forskjellige "progammene" klarer ikke å finne verdien til meny Et par ting som jeg lurer på om går ant. Når jeg har utført de forskjellige "programmene" vil jeg at menyen skal starte på nytt slik at jeg kan kjøre f.eks tomme programmet en gang til. Når jeg er ferdig så skal man trykke 3 for å avslutte. Jeg har fått til i menyen, ved hjelp av boolean, at den kun går ant å skrive tall (dvs hvis man trykker f.eks et tegn eller bokstav så kommer den en feilmelding opp), men går det ant å begrense det slik at en kan kun trykke 1, 2 eller 3? import javax.swing.JOptionPane; class meny { public static void main(String[] args){ double meny = 0; boolean gjenta = true; while (gjenta) { String menyLest= JOptionPane.showInputDialog("Meny: Tomme = 1, Sekund = 2, Avlutt = 3"); try { meny = Double.parseDouble(menyLest); gjenta = false; } catch (NumberFormatException e) { JOptionPane.showMessageDialog(null, "Ulovlig menyvalg"); } } if(meny.equals("1")) { System.out.println("!!!"); double tomme = 0; boolean gjenta1 = true; while (gjenta1) { String tommelLest= JOptionPane.showInputDialog("Tomme: "); try { tomme = Double.parseDouble(tommelLest); gjenta1 = false; } catch (NumberFormatException e) { JOptionPane.showMessageDialog(null, "Ulovlig lengde"); } } double abc = tomme * 2.614; JOptionPane.showMessageDialog(null, "Centimeter: " + abc + "!!!!"); System.exit(0); } else if(meny.equals("2")) { double sekund = 0; boolean gjenta2=true; while (gjenta2){ String sekundLest= JOptionPane.showInputDialog("Sekunder: "); try { sekund = Double.parseDouble(sekundLest); gjenta2 = false; } catch (NumberFormatException e) { JOptionPane.showMessageDialog(null, "Ulovlig verdi"); } } double abc = sekund / 3600; JOptionPane.showMessageDialog(null, "Timer: " + abc + "!"); System.exit(0); } else if(meny.equals("3")) { System.exit(0); } } } Her er feilmeldingene jeg får ved kompilering C:\Java\Kapittel 02\Med meny\meny.java:17: double cannot be dereferenced if(meny.equals("1")) { ^ C:\Java\Kapittel 02\Med meny\meny.java:35: double cannot be dereferenced } else if(meny.equals("2")) { ^ C:\Java\Kapittel 02\Med meny\meny.java:53: double cannot be dereferenced } else if(meny.equals("3")) { ^ 3 errors Tool completed with exit code 1 Til de som måtte lure så er ikke dette en skole oppgave Det er bare noen script jeg har laget i timen som jeg vil videre utvikle Lenke til kommentar
anderlin Skrevet 15. september 2004 Del Skrevet 15. september 2004 (endret) Hvorfor bruker du double? Uansett, prøv å sammenligne tallene direkte: if (meny == 1) "double cannot be dereferenced" tror jeg betyr noe om at double ikke er et objekt, men en primitiv type. F.eks.: int tall = 6; int tall2 = 5; tall.equals(tall2); Er ikke gyldig. Isteden må man opprette ojekter: Integer tall = new Integer(6); Integer tall2 =new Integer(5); tall.equals(tall2); eller int tall = 6; int tall2 = 5; (new Integer(tall)).equals(new Integer(tall2)); Tror jeg, da. Endret 15. september 2004 av anderlin Lenke til kommentar
anderlin Skrevet 15. september 2004 Del Skrevet 15. september 2004 Jeg har fått til i menyen, ved hjelp av boolean, at den kun går ant å skrive tall (dvs hvis man trykker f.eks et tegn eller bokstav så kommer den en feilmelding opp), men går det ant å begrense det slik at en kan kun trykke 1, 2 eller 3? Hva med å bruke JOptionPane.showOptionDialog? Da slipper du å konvertere fra String til double (eller int), og brukeren får ikke mulighet til å gjøre noe ulovlig. Noe slikt: Object[] options = { "Tommer", "Timer", "Avbryt" }; int meny = JOptionPane.showOptionDialog(null, "Velg funksjon", "Program", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, options, null); Lenke til kommentar
Frank2004 Skrevet 15. september 2004 Del Skrevet 15. september 2004 Man lager ikke scripts i Java. Lenke til kommentar
phnx85 Skrevet 16. september 2004 Forfatter Del Skrevet 16. september 2004 Grunnen til at jeg bruker double er fordi vi har akkurat startet med Java på skolen og vi har lært å bruke double. if (meny == 1) Denne testet jeg rett etter at jeg postet og den fungerte, ingen kompilerings feil. showOptionDialog høres ut som det passer midt i blinken. Men hvordan skal jeg gjøre det for å få kunne starte på toppen av programmet etter at f.eks tomme omregnings programmet er ferdi? Lenke til kommentar
anderlin Skrevet 16. september 2004 Del Skrevet 16. september 2004 Men hvordan skal jeg gjøre det for å få kunne starte på toppen av programmet etter at f.eks tomme omregnings programmet er ferdi? Hva med en while-løkke rundt det hele? boolean fortsett = true; while (fortsett) { [...] } else if (meny == 3) { fortsett = false; } } Lenke til kommentar
phnx85 Skrevet 16. september 2004 Forfatter Del Skrevet 16. september 2004 (endret) Men hvordan skal jeg gjøre det for å få kunne starte på toppen av programmet etter at f.eks tomme omregnings programmet er ferdi? Hva med en while-løkke rundt det hele? boolean fortsett = true; while (fortsett) { [...] } else if (meny == 3) { fortsett = false; } } Tenke på at en while løkke ville fungere, men siden vi ikke har lært om det enda så viste jeg ikke helt hvordan jeg skal skrive det. Vi har ikke Java i dag og læreren min blir så mongo når jeg holder på med Java mens vi har andre timer Edit: Jeg fikk det til Tusen takk anderlin, du har vært til stor hjelp Når jeg får tid skal jeg lese litt i Java boka om showOptionDialog Endret 16. september 2004 av phoen|x Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå