apwr Skrevet 13. september 2006 Forfatter Del Skrevet 13. september 2006 Har enda et problem her...merkelig Skal lage et program som skriver ut pris eks.mva, mva og pris inkl. mva. Jeg har følgende kode: import java.text.DecimalFormat; // Hjelpeprogram for formatering import javax.swing.JOptionPane; // Hjelpeprogram for innlesing og utskriving public class Pris { public static void main(String[] args) { //Variabeldeklarasjon String inputPris_umva; float pris_umva; float mva; DecimalFormat toDesimaler; double = toDesimaler; toDesimaler = new DecimalFormat(0.00); //Utfører beregninger mva = (pris_umva*0.75); inputPris_umva = JOptionPane.showInputDialog("Skriv inn prisen u/mva"); pris_umva = Float.parseFloat( inputPris_umva ); System.out.println("Pris eks. mva = " + toDesimaler.format(pris_umva) + "kr"); System.out.print("Mva = " + (mva) + "kr"); System.out.println("Pris inkl. mva = " + toDesimaler.format(pris_umva + mva) + "kr"); //Avslutter program System.exit(0); }//end metode main() }//end klasse Pris Jeg får en slik feilmelding: ...not a statement double = toDesimaler; ^ (med hake under "d" i double) expected double = toDesimaler; ^ (med hake mellom double og tilordningstegnet) Noen som vet hva som er galt? Lenke til kommentar
sluggr Skrevet 13. september 2006 Del Skrevet 13. september 2006 Ja, den linja der trenger du ikke. Kan slette den, evt. // den ut. Lenke til kommentar
apwr Skrevet 13. september 2006 Forfatter Del Skrevet 13. september 2006 Da jeg luker bort denne linja kommer det opp to andre feilmeldinger: Cannot find symbol Symbol : constructor DecimalFormat(double) loacation : class java.text.DesimalFormat toDesimaler = new DecimalFormat (0.00); ^ (hake under "n" i new) Possible loss of precision found : double rquired : float mva = (pris_umva * 0.75); ^ (hake under multiplikasjonstegnet) Hva er galt? Lenke til kommentar
sluggr Skrevet 13. september 2006 Del Skrevet 13. september 2006 Vel, den siste først. Du instansierer mva før pris_umva er instansiert. En variabel som skal brukes må ha en verdi. Så i det tilfellet her må pris_umva få en verdi før du kan gi mva en verdi (basert på pris_uma). Derfor må du flytte den linja til etter der hvor pris_umva får sin verdi. pris_umva = Float.parseFloat( inputPris_umva ); mva = (pris_umva*0.75); Kommer tilbake til decimalFormat om litt.. Lenke til kommentar
apwr Skrevet 13. september 2006 Forfatter Del Skrevet 13. september 2006 Gjorde det nå, men fikk fortsatt de samme feilmeldingene. Lenke til kommentar
sluggr Skrevet 13. september 2006 Del Skrevet 13. september 2006 Okå, argumentet til decimalFormat er på String-format, så du må pakke inn 0.00 i "", altså "0.00" Lenke til kommentar
sluggr Skrevet 13. september 2006 Del Skrevet 13. september 2006 mva må forresten castes til float mva = (float) (pris_umva*0.75); Lenke til kommentar
apwr Skrevet 13. september 2006 Forfatter Del Skrevet 13. september 2006 Takk skal du ha igjen! Nå virker det. (Kommer sikkert med flere spørsmål etterhvert) Lenke til kommentar
sluggr Skrevet 13. september 2006 Del Skrevet 13. september 2006 Selvfølgelig, bare å komme med spørsmål. Morsomt å hjelpe Lenke til kommentar
apwr Skrevet 13. september 2006 Forfatter Del Skrevet 13. september 2006 Er i ferd med å lage samme pogram, men innlesing skal skje gjennom dos-vindu. Får 1 error når jeg skal kompilere. Kanskje du kan hjelpe? import java.text.DecimalFormat; // Hjelpeprogram for formatering import java.io.*; // Hjelpeprogram for innlesing fra DOS-vindu public class Prisdos { public static void main(String[] args) { //Variabeldeklarasjon String inputPris_umva; float pris_umva; float mva; DecimalFormat toDesimaler; InputStreamReader inputStrom; // objektholder for strømningsobjekt BufferedReader bufferLeser; // objektholder for lesingsobjekt toDesimaler = new DecimalFormat("0.00"); inputStrom = new InputStreamReader(System.in); bufferLeser = new BufferedReader(inputStrom); //Innlesing av verdi System.out.print("Skriv inn pris eks. mva (desimaltall): "); //Skriv ledetekst inputPris_umva = bufferLeser.readLine(); //Les teksttall pris_umva = Float.parseFloat( inputPris_umva ); mva = (float) (pris_umva * 1.25) - pris_umva; System.out.println("Pris eks. mva = " + toDesimaler.format(pris_umva) + "kr"); System.out.print("Mva = " + (mva)+"0" + "kr" + "\n"); System.out.println("Pris inkl. mva = " + toDesimaler.format(pris_umva + mva) + "kr"); //Avslutter program System.exit(0); }//end metode main() }//end klasse Prisdos Feilmeldingen lyder: ...unreported exception java.io.IOException must be caught or declared to be thrown inputPris_umva = bufferLeser.readLine(); //Les teksttall ^ (hake under venstrestil parentes) Lenke til kommentar
Orjanp Skrevet 13. september 2006 Del Skrevet 13. september 2006 http://java.sun.com/docs/books/tutorial/es...ial/exceptions/ Lenke til kommentar
apwr Skrevet 13. september 2006 Forfatter Del Skrevet 13. september 2006 Fikk det til! Lenke til kommentar
sluggr Skrevet 13. september 2006 Del Skrevet 13. september 2006 try { inputPris_umva = bufferLeser.readLine(); } catch (IOException e) { e.printStackTrace(); } Lenke til kommentar
Ueland Skrevet 13. september 2006 Del Skrevet 13. september 2006 Try og Catch er noe som det bare er å bli kjent med først som sist, veldig greie å bruke når man skal skrive ut forståelige feilmeldinger istedet for de kryptiske feilmeldingene til java. Husk at "vanlige folk" ikke fatter døyten av java -feilmeldinger. try { moo = "foo"; } catch (Exception e) { System.out.print("Fooingen av mooen feilet!"); } Lenke til kommentar
sluggr Skrevet 13. september 2006 Del Skrevet 13. september 2006 Du burde virkelig skaffe deg f.eks Eclipse. Det gjør det veldig mye lettere å lære seg java. Får du masse fine farger og greier i tillegg til hjelp til det meste Lenke til kommentar
apwr Skrevet 13. september 2006 Forfatter Del Skrevet 13. september 2006 (endret) Er i ferd med å lage samme program som før, men innlesing og UTLESING skal skje ved hjelp av JOptionPane-pakken. Jeg har følgende kode: import java.text.DecimalFormat; // Hjelpeprogram for formatering import javax.swing.JOptionPane; // Hjelpeprogram for innlesing og utskriving public class Prisdialog { public static void main(String[] args) { //Variabeldeklarasjon String inputPris_umva; float pris_umva; float mva; DecimalFormat toDesimaler; String utStreng; toDesimaler = new DecimalFormat("0.00"); //Innlesing av verdi inputPris_umva = JOptionPane.showInputDialog("Skriv inn prisen u/mva"); pris_umva = Float.parseFloat( inputPris_umva ); mva = (float) (pris_umva * 1.25) - pris_umva; utStreng = utStreng + "Pris eks. mva" = toDesimaler.format(pris_umva) + "kr" + "\n"; utStreng = utStreng + "Mva" = (mva)+ "kr"; utStreng = utStreng + "Pris inkl. mva" = toDesimaler.format(pris_umva + mva) + "kr"; JOptionPane.showMessageDialog(null,utStreng, "Resultat",JOptionPane.PLAIN_MESSAGE ); //Avslutter program System.exit(0); }//end metode main() }//end klasse Prisdialog Får ikke kompilert. Hva er feil? Problemene ligger her btw: utStreng = utStreng + "Pris eks. mva" = toDesimaler.format(pris_umva) + "kr" + "\n"; utStreng = utStreng + "Mva" = (mva)+ "kr"; utStreng = utStreng + "Pris inkl. mva" = toDesimaler.format(pris_umva + mva) + "kr"; Endret 13. september 2006 av apwr Lenke til kommentar
sluggr Skrevet 13. september 2006 Del Skrevet 13. september 2006 (endret) Vel, for det første har du skrevet disse utStrengene dine med feil syntaks. = skal på innsiden av "" og så skal det en + på høyre siden av " igjen når det skal tilføyes mere tekst. utStreng = utStreng + "Mva =" + (mva) + "kr"; Du kan heller ikke bruke utStreng etter = tegnet i den første linjen. Den er ikke instansiert som vi har vært borti før. Nå fyller du opp utStreng for første gang og da kan du ikke bruke variabelen selv. Men her kan du kutte den helt ut (bare i den første linjen). Etterhvert kan det kanskje se sånn her ut: utStreng = "Pris eks. mva =" + toDesimaler.format(pris_umva) + "kr" + "\n"; utStreng = utStreng + "Mva =" + (mva)+ "kr"; utStreng = utStreng + "Pris inkl. mva =" + toDesimaler.format(pris_umva + mva) + "kr"; Du kunne og fylt utStreng med en tom linje før du begynner å stappe den med tekst hvor du bruker variabelen selv til stappingen. Det er gunstig når du begynner med løkker. utStreng = ""; utStreng = utStreng + "Pris eks. mva =" + toDesimaler.format(pris_umva) + "kr" + "\n"; utStreng = utStreng + "Mva =" + (mva)+ "kr"; utStreng = utStreng + "Pris inkl. mva =" + toDesimaler.format(pris_umva + mva) + "kr"; Begynner du å forstå opplegget med instansiering nå? Kan godt forklare det litt mer utdypende.. Endret 13. september 2006 av sluggr Lenke til kommentar
apwr Skrevet 13. september 2006 Forfatter Del Skrevet 13. september 2006 Takk, takk! Begynner å forstå litt mer om instansiering, men kunne vært greit med litt mer utdypende info ja. Ettt spørsmål til: Hvordan gjør jeg om dette programmet til å bruke JTextArea ved utskrift enklest mulig? Lenke til kommentar
sluggr Skrevet 13. september 2006 Del Skrevet 13. september 2006 Jo, når du lager deg en variabel av en bestemt type (deklarerer), f.eks String utStreng; får du en variabel som heter utStreng som er av typen String. Denne inneholder i utgangspunktet ingenting, ikke 0 eller en tom streng ("").. ingenting. Du kan da ikke benytte denne variabelen i noen oppgaver før du har gitt den noen som helst verdi, f.eks at den skal være en tom streng (utStreng = "" eller et ord eller hva som helst ("utStreng = "startenpåstrengen"). Først når du har gjort dette kan du bruke variabelen i andre oppgaver, som å instansiere en annen variabel, f.eks String utStreng2 = utStreng; Det du prøvde på var å fylle opp utStreng med det som lå i utStreng fra før... hvilket var ingenting, og java kan ikke bruke fylle opp en streng med ingenting. Saken er at det virker logisk å kunne bruke en variabel som består av ingenting fordi at den da ikke burde tilføye noenting, men i java er det forskjell på ingenting og en tom streng. Håper det forklarer det litt bedre. Lenke til kommentar
apwr Skrevet 13. september 2006 Forfatter Del Skrevet 13. september 2006 Begynner å forstå mer og mer nå. Tusen takk skal du ha! Gleder meg til den dagen jeg får like mye kunnskap om javaprogrammering som deg, hvis den dag kommer da 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å