Gå til innhold

Hvorfor fungerer ikke koden?


Anbefalte innlegg

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
Videoannonse
Annonse

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 av drange
Lenke til kommentar

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

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

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
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. :thumbup:

Lenke til kommentar

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 av Qwark
Lenke til kommentar

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 av apwr
Lenke til kommentar

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 :thumbup:

Lenke til kommentar

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 :cool: meget anvendelig og bra... får plugin til Python og andre språk også om du er interessert i det.

Lenke til kommentar

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

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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...