apwr Skrevet 12. oktober 2006 Del Skrevet 12. oktober 2006 Har fått i oppgave å lage et javaprogram som skal beregne omkretsen av en sirkel og arealet av sirkelflaten. Beregningen av omkrets og areal skal foregå i to klassemetoder som er plassert i en egen klasse med navn GeoFig. Innlesing av radius og utskrift av omkrets og areal skal foregå i main-metoden som er plassert i klassen BrukGeoFig. Her er koden jeg har: import javax.swing.JOptionPane; public class BrukGeoFig { public static void main(String[] args) { //Variabeldeklarasjon double radius; double areal; double omkrets; //initiering radius = JOptionPane.showInputDialog("Skriv inn radius"); Public class GeoFig { public static double omkrets(double radius) { double omkrets; omkrets = (2 * radius * 3.14); return omkrets; } public static double areal(double radius) { double areal; areal = (3.14 * radius * radius); return areal; } } //Skriver ut System.out.println("Innlest radius: " + radius); System.out.println("Sirkelomkrets: " + omkrets); System.out.println("Areal av sirkelflate: " + areal); System.exit(0); } end method main() } end class BrukGeoFig Jeg får 5 feilmeldinger: expected ; i Public class GeoFig og i Method main, samt en del annet. Noen som vet hva som er feil? Lenke til kommentar
pgdx Skrevet 12. oktober 2006 Del Skrevet 12. oktober 2006 (endret) De to siste skal vel ihvertfall være kommentert, skal de ei? Og hvorfor har du ikke class GeoFig i en egen fil? BrukGeoFig.java: public class BrukGeoFig { public static void main(String[] args) { //Variabeldeklarasjon double radius; double areal; double omkrets; //initiering GeoFig sirkel = new GeoFig(); System.out.println("Areal: " + sirkel.areal(42)+"\nOmkrets: " + sirkel.omkrets(42)); } } GeoFig.java: import java.lang.Math; class GeoFig { double omkrets(double radius) { double omkrets; omkrets = (2 * radius * Math.PI); return omkrets; } double areal(double radius) { double areal; areal = (Math.PI * radius * radius); return areal; } } Endret 12. oktober 2006 av drange Lenke til kommentar
apwr Skrevet 12. oktober 2006 Forfatter Del Skrevet 12. oktober 2006 Takk. Nå har jeg følgende kode: import javax.swing.JOptionPane; public class BrukGeoFig { public static void main(String[] args) { //Variabeldeklarasjon double radius; double areal; double omkrets; //initiering radius = JOptionPane.showInputDialog("Skriv inn radius"); radius = double.parseDouble( radius ); //Skriver ut System.out.println("Innlest radius: " + radius); System.out.println("Sirkelomkrets: " + omkrets); System.out.println("Areal av sirkelflate: " + areal); System.exit(0); } } Jeg får en feilmelding: class expected radius = double.parseDouble( radius ); ^ (hake under p i parse) Lenke til kommentar
pgdx Skrevet 12. oktober 2006 Del Skrevet 12. oktober 2006 Hvis du allerede har satt radius til å være en double, hvorfor parser du den senere? Lenke til kommentar
apwr Skrevet 12. oktober 2006 Forfatter Del Skrevet 12. oktober 2006 Godt spørsmål! Da har jeg fjernet den setningen, men får en feilmelding: incompatible types found: java.lang.string required: double radius = JOptionPane.showInputDialog("Skriv inn radius"); ^(hake under venstrestilt parentes) Lenke til kommentar
apwr Skrevet 12. oktober 2006 Forfatter Del Skrevet 12. oktober 2006 Godt spørsmål! Da har jeg fjernet den setningen, men får en feilmelding: incompatible types found: java.lang.string required: double radius = JOptionPane.showInputDialog("Skriv inn radius"); ^(hake under venstrestilt parentes) Lenke til kommentar
pgdx Skrevet 12. oktober 2006 Del Skrevet 12. oktober 2006 Ja, det er fordi JOptionPane.showInputDialog() returnerer en String og ikke en double. Prøv noe ala String input = JOptionPane.showInputDialog("Skriv..."); radius = double.parseDouble(input); Lenke til kommentar
apwr Skrevet 12. oktober 2006 Forfatter Del Skrevet 12. oktober 2006 Takk igjen. Når jeg bruker de to setningene du gav meg får jeg en annen feilmelding: class expected radius = double.parseDouble(input); ^ (hake under p i parse) Hva er feil? Lenke til kommentar
Qwark Skrevet 12. oktober 2006 Del Skrevet 12. oktober 2006 Takk igjen. Når jeg bruker de to setningene du gav meg får jeg en annen feilmelding: class expected radius = double.parseDouble(input); ^ (hake under p i parse) Hva er feil? 7057338[/snapback] //Variabeldeklarasjon double radius; double areal; double omkrets; Det er ikke lov med objektvariabler i main, så du må initiere disse ved å legge på 0.0 bak de, men det er ikke nødvendig å ha de med i heletatt her. det er bare å opprette variablene ved innlesing/beregning. //initiering radius = JOptionPane.showInputDialog("Skriv inn radius"); radius = Double.parseDouble( radius ); Stor D i Double.parseDouble. Lenke til kommentar
apwr Skrevet 12. oktober 2006 Forfatter Del Skrevet 12. oktober 2006 Takk skal du ha! Når jeg legger til 0.0 bak variablene får jeg bare feilmeldinger. Men hvordan oppretter jeg disse direkte i utregningene? Lenke til kommentar
Qwark Skrevet 13. oktober 2006 Del Skrevet 13. oktober 2006 (endret) double radius = Double.parseDouble(strRad); //Skriver ut System.out.println("Innlest radius: " + radius); System.out.println("Sirkelomkrets: " + fig.areal(radius)); System.out.println("Areal av sirkelflate: " + fig.areal(radius)); Slik kan det gjøres, eller om du skulle trenger å beholde areal og omkrets i en variabel så double radius = Double.parseDouble(strRad); double areal = fig.areal(radius); double omkrets = fig.areal(radius); //Skriver ut System.out.println("Innlest radius: " + radius); System.out.println("Sirkelomkrets: " + omkrets); System.out.println("Areal av sirkelflate: " + areal); Endret 13. oktober 2006 av Qwark Lenke til kommentar
apwr Skrevet 13. oktober 2006 Forfatter Del Skrevet 13. oktober 2006 (endret) Dette her for jeg rett og slett ikke til... Jeg har følgende kode: import javax.swing.JOptionPane; public class BrukGeoFig { public static void main(String[] args) { //Variabeldeklarasjon String radius; double areal; double omkrets; //initiering String input = JOptionPane.showInputDialog("Skriv inn radius"); radius = Double.parseDouble(input); //Skriver ut System.out.println("Innlest radius: " + radius); System.out.println("Sirkelomkrets: " + omkrets); System.out.println("Areal av sirkelflate: " + areal); System.exit(0); } } public class GeoFig { public static double omkrets(double radius) { double omkrets; omkrets = (2 * radius * 3.14); return omkrets; } public static double areal(double radius) { double areal; areal = (3.14 * radius * radius); return areal; } } Akkurat hva må til for å få dette til å fungere enklest mulig? Takker for svar Endret 13. oktober 2006 av apwr Lenke til kommentar
pgdx Skrevet 13. oktober 2006 Del Skrevet 13. oktober 2006 Ved å bruke den filen jeg la ved noen poster oppover Lenke til kommentar
rusolvan Skrevet 13. oktober 2006 Del Skrevet 13. oktober 2006 har laget kode som fungerer nedenfor... Grunnen til at du ikke fikk parset over den stringen fra JOptionPane'n var at du hadde deklarert radius variabelen som en String, noe som bli feil side du skal prøve å parse FRA String til Double... her er koden: BrukGeoFig klassen: import javax.swing.JOptionPane; public class BrukGeoFig{ // Variabeldeklarasjon static double radius; static double areal; static double omkrets; public static void main(String[] args){ //initiering String input = JOptionPane.showInputDialog("Skriv inn radius"); radius = Double.parseDouble(input); //Skriver ut System.out.println("Innlest radius: " + radius); System.out.println("Sirkelomkrets: " + GeoFig.omkrets(radius)); System.out.println("Areal av sirkelflate: " + GeoFig.areal(radius)); System.exit(0); } } GeoFig klassen: public class GeoFig { public static double omkrets(double radius) { double omkrets; omkrets = (2 * radius * 3.14); return omkrets; } public static double areal(double radius) { double areal; areal = (3.14 * radius * radius); return areal; } } dette funker Lenke til kommentar
rusolvan Skrevet 13. oktober 2006 Del Skrevet 13. oktober 2006 Har du forresten brukt Eclipse tilJava programmering? Det er til STOR hjelp mens du programmerer siden du alltidvil gjøre en eller annen feil mens du koder, Eclipse gir deg beskjed om sånnt, samt at du får alternativer til hvordan du kan løse problemet... et tips bare meget anvendelig og bra... får plugin til Python og andre språk også om du er interessert i det. Lenke til kommentar
apwr Skrevet 15. oktober 2006 Forfatter Del Skrevet 15. oktober 2006 Tusen takk for hjelpen! Det virker nå ja. Nå har jeg startet på en ny oppgave som er hakket vanskeligere, den lyder som følger: "Firmaet Hitra Sjøgodt selger rensede blåskjell i to typer pakninger, rektangulære og sylindriske. Bedriften ønsker å registrere det totale volumet av rensede blåskjell som selges i løpet av en periode. Det skal en gjøre ved å lage et program som registrerer data for samtlige pakninger som leveres. For rektangulære pakninger registreres lengde, bredde og høyde. For sylindriske pakninger registreres grunnflatens radius og høyde. Alle mål oppgis i cm. Volumet av en rektangulær pakning er: lengde * bredde * høyde Volumet av en sylindrisk pakning er: 3.14 * radius * radius * høyde Beregning av volum for rektangulær og sylindrisk pakning skal foregå i to klassemetoder, RektangelVolum og SylinderVolum, som er plaser i egen klasse. Programmet skal beregne og skrive ut det totale volumet av rensede blåskjell som er levert og prosentvis fordeling for rektangulære og sylindriske pakninger. Innlesing og utskrift av data foregår i main-metoden." Her skal det leses inn et ukjent antall pakker av både sylinder og rektangulær form. Jeg har laget en liten kode nedenfor med drøssevis av feil. Det hadde vært fint om du eller noen andre kunne ha hjelpet meg inn på rett spor. Her er koden: import javax.swing.JOptionPane; public class BrukVolum{ // Variabeldeklarasjon static double radius; static double hoyde; static double lengde; static double bredde; static double rektVolum; static double sylVolum; public static void main(String[] args){ //initiering String input = JOptionPane.showInputDialog("Skriv inn lengde på rektangulær pakning (cm)"); String input = JOptionPane.showInputDialog("Skriv inn bredde på rektangulær pakning (cm)"); String input = JOptionPane.showInputDialog("Skriv inn hoyde rektangulær pakning (cm)"); lengde = Double.parseDouble(input); bredde = Double.parseDouble(input); hoyde = Double.parseDouble(input); String input2 = JOptionPane.showInputDialog("Skriv inn lengde på sylinderpakning (cm)"); String input2 = JOptionPane.showInputDialog("Skriv inn bredde på sylinderpakning (cm)"); radius= Double.parseDouble(input2); hoyde = Double.parseDouble(input2); //Skriver ut System.out.println("SylVolum: " + Volum.sylVolum(lengde, bredde, hoyde)); System.out.println("RektVolum: " + Volum.rektVolum(radius, hoyde)); System.out.println("Volum total: " + Volum.sylVolum(lengde, bredde, hoyde) + Volum.rektVolum(radius, hoyde)); System.exit(0); } } public class Volum { public static double RektangelVolum(double lengde, bredde, hoyde) { double RektVolum; rektVolum = (lengde * bredde * hoyde); return rektVolum; } public static double SylinderVolum(double radius, hoyde) { double SylVolum; sylVolum = (3.14 * radius * radius * hoyde); return sylVolum; } } Kanksje jeg skal prøve Eclipse ja, Textpad er jo ikke akkurat "state of the art"... Lenke til kommentar
Qwark Skrevet 15. oktober 2006 Del Skrevet 15. oktober 2006 import javax.swing.JOptionPane; public class BrukVolum{ // Variabeldeklarasjon static double radius; static double hoyde; static double lengde; static double bredde; static double rektVolum; static double sylVolum; public static void main(String[] args){ //initiering /*Her overskiver du forrige input ved at du bruker samme variabel(input) på alle linjene husk å gi varable forskjellige navn slik som jeg har gjort her, evt parse de til double rett etter at du har lest inn data fra brukeren*/ String input = JOptionPane.showInputDialog("Skriv inn lengde på rektangulær pakning (cm)"); String input2 = JOptionPane.showInputDialog("Skriv inn bredde på rektangulær pakning (cm)"); String input3 = JOptionPane.showInputDialog("Skriv inn hoyde rektangulær pakning (cm)"); lengde = Double.parseDouble(input); bredde = Double.parseDouble(input2); hoyde = Double.parseDouble(input3); /*Hvor leser du inn radius?;-) skal vel være slik */ String input4 = JOptionPane.showInputDialog("Skriv inn radius på sylinderpakning (cm)"); String input5 = JOptionPane.showInputDialog("Skriv inn hoyde på sylinderpakning (cm)"); radius= Double.parseDouble(input4); hoyde = Double.parseDouble(input5); //Skriver ut /*Her var argumentene på medodekallene blandet*/ System.out.println("SylVolum: " + Volum.SylinderVolum(radius, hoyde)); System.out.println("RektVolum: " + Volum.RektangelVolum(lengde,bredde, hoyde)); System.out.println("Volum total: " + Volum.SylinderVolum(radius, hoyde) + Volum.RektangelVolum(lengde,bredde, hoyde)); System.exit(0); } } public class Volum { public static double RektangelVolum(double lengde, double bredde, double hoyde) { double rektVolum = 0; rektVolum = (lengde * bredde * hoyde); return rektVolum; } public static double SylinderVolum(double radius, double hoyde) { double sylVolum = 0; sylVolum = (3.14 * radius * radius * hoyde); return sylVolum; } } Har kommentert i koden en del. og i tilleg så pass på at variablene skrives likens overalt, du har rottet en del med store å små bokstaver. Lenke til kommentar
apwr Skrevet 15. oktober 2006 Forfatter Del Skrevet 15. oktober 2006 Tusen takk, Qwark! Skal se på saken, og kommer helt sikkert tilbake med flere spørsmål senere. Lenke til kommentar
apwr Skrevet 15. oktober 2006 Forfatter Del Skrevet 15. oktober 2006 Da fungerer koden vettu! Men slik som den er nå leser den kun inn én sylinderpakning og en rektangelpakning. Oppgaven vil at jeg skal kunne lese inn flere pakker. Jeg må vel lage en slags løkke eller? Lenke til kommentar
apwr Skrevet 15. oktober 2006 Forfatter Del Skrevet 15. oktober 2006 Noen som vet hvordan dette gjøres? 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å