Permalänk

Nybörjarproblem i Java

Hej.

Nu har jag suttit här i ett par timmar och försökt att lösa en läxa. Den går ut på att räkna ut halva arean på en cirkel genom att bara skriva in radien, radien får inte vara mindre än 1. såhär långt han jag kom jag.

package Package_Test; public class Nejnejnej { public static void main(String[] args) { boolean försökigen = true; System.out.println("mata in radien"); double radie = Keyboard.readDouble(); double area = Cirkelarea(radie); while (försökigen){ if (radie>0){ System.out.println("Halva cirkelns area är: " + area + " kvm"); försökigen = false; } else{ System.out.println ("För litet tal!\n " + "Försök igen."); försökigen = true; System.exit(0); } } } public static double Cirkelarea(double radie){ final double PI = 3.14159; double area = radie*radie*PI/2; return area; } }

Problemet är ifall jag skriver in en radie som är mindre eller lika med 0 ska man få en chans att få skriva in radien på nytt utan att köra om programmet. För att jag ska kunna försöka igen måste jag köra om programmet. Jag bestämde mig för att göra om texten lite.

package pakage_test;

public class läxa_14_11 { public static void main(String[] args) { boolean försökigen = true; double area = Cirkelarea(radie); while (försökigen){ System.out.println("mata in radien"); double radie = Keyboard.readDouble(); if (radie>0){ System.out.println("Halva cirkelns area är: " + area + " kvm"); försökigen = false; } else{ System.out.println ("För litet tal!\n " + "Försök igen."); försökigen = true; } System.exit(0); }//slut på while }//slut på main method public static double Cirkelarea(double radie){ final double PI = 3.14159; double area = radie*radie*PI/2; return area; } }

Då får jag upp ett felmeddelandet "cannot finde symbol" på den här textraden "double area = Cirkelarea(radie);"
Skulle uppskatta ifall någon skulle kunna säga vad jag gör för fel och förklara hur jag ska göra för att det blir rätt.

Permalänk
Medlem

För att göra det lite lättare att följa så rekommenderar jag att du använder code-taggarna.

Exempelvis så här:

if(i=1){ string="exempel"; }

Visa signatur
Permalänk
Medlem

Nu får du lov att tänka efter lite vad varje rad gör. Raden som kompilatorn klagar på

double area = Cirkelarea(radie);

Vad har radie för värde vid det skedet?

Dessutom, vet du vad System.exit(0) gör? Och vad händer då while-loopen kommer till den raden?

Edit: Du bör undvika att använda åäö i funktionsnamn och variabelnamn. Det kanske fungerar just nu, men det gör inte alltid det, och det är inget som rekommenderas. Dessutom är titeln på tråden lite konstig, då det helt och hållet är ett Java-problem, och det inte har något som helst med Netbeans att göra (som även kan användes till många andra programmeringsspråk).

Permalänk
Skrivet av laser lenart:

radien får inte vara mindre än 1
...

ifall jag skriver in en radie som är mindre eller lika med 0
...

if (radie>0){

Hej, menar du att radien inte får vara mindre än 1 eller mindre än eller lika med 0? Det du har skrivit är inkonsekvent med villkoret i din if-sats.

Är en fullständig Java-rookie och vet inte vad System.exit(0) gör... Försökte mig på en lösning vilken utgår ifrån premissen att jag vill "återaktivera" inputläget i terminalen (eller vad man nu har) när en icke godkänd radie har skrivits in. Huruvida det är en bra lösning (tillika kod) kan jag inte säga men det fungerar, då med en radie som måste vara 1 eller större.
Använde Math.PI för pi-värdet då det verkar smidigare än att själv definiera pi.

Rättat till syftningsfel.
Permalänk
Hedersmedlem

*Rubrik redigerad*

Jag lade även din kod i [CODE]-taggar, så blir det mycket lättare att läsa. Jag förstår att du som nybörjare kanske inte förstår varför Netbeans inte har något med ditt problem att göra. Koden du skriver hade du lika gärna kunnat skriva i Notepad, så problemet har inget med Netbeans att göra.

Permalänk
Medlem
Skrivet av BrutalSwede:

Som Tazavoo säger.

Sen så har du fått formeln för cirkelns area fel. (r*r*pi)

"Den går ut på att räkna ut halva arean på en cirkel".

Permalänk
Medlem

Som jag tolkar det utifrån det du beskrev så får radien inte vara mindre än 1.
Vad händer om radien är 0,5 if (radie>0)?

Sen så ska du antingen ta bort System.exit(0) eller flytta den utanför while loopen.

Permalänk
Medlem
Skrivet av Tazavoo:

"Den går ut på att räkna ut halva arean på en cirkel".

Ojsan, missade visst den lilla detaljen

Visa signatur

| EVGA Z170 FTW | i7 6700k | ASUS RTX 3070 | 16GB DDR4 3200MHz | Cooler Master V850 | Samsung 840 Evo 250GB + 2x WD Black 500GB + Seagate 2TB SSHD + Samsung 970 Evo M.2 1TB|