Behöver hjälp (Netbeans, Java)

Trädvy Permalänk
Medlem
Registrerad
Apr 2017

Behöver hjälp (Netbeans, Java)

Hej,

Ska räkna ut medelvärdet med hjälp av en scanner också får användaren välja själv vad dom vill mata in.

Såhär långt har jag kommit:

Scanner input = new Scanner(System.in); System.out.println("Mata in ett decimaltal: "); double tal1 = input.nextDouble(); double svar=medel(tal1); System.out.println("Medelvärdet är " + svar); } static double medel(double tal1) { double medelv=tal1/; return medelv; }

Men den räknar inte ut medelvärdet? Vad har jag gjort för fel?

Och vad gör jag för fel här?
Den ska räkna ut area på en cirkel men man ska ha en metod.

Är det rätt?

Scanner input=new Scanner(System.in); System.out.print("Skriv in radien: "); double radie=input.nextDouble(); double area = (Math.PI * 2 * radie); System.out.println("Arean är: "+area); } static double area(double radie) { double svar=Math.PI * 2 * radie; return svar; } }

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Feb 2009

I den första:
Hur tänker du att du ska räkna ut medelvärdet av ett enda tal?

I den andra:
Två fel. Du har en metod, men du anropar den inte. Rad fyra borde vara ett metodanrop, och inte en uträkning.
Det andra är att matematiken är fel. Arean av en cirkel är PI*(r^2), och omkretsen är 2*r*PI. Du har använt formeln för omkrets och inte area.

NZXT H2, OCZ ModXStream-PRO 600W, MSI P67A-C45, Intel i5 2500K @ 4.4GHz, Gigabyte GTX 460, 4GB Corsair Vengeance DDR3 1600MHz CL9 (2x2GB), OCZ Agility 60GB, Seagate Barracuda 250GB, 2x Western Digital Caviar 1TB

Trädvy Permalänk
Medlem
Registrerad
Apr 2017
Skrivet av Maldergho:

I den första:
Hur tänker du att du ska räkna ut medelvärdet av ett enda tal?

I den andra:
Två fel. Du har en metod, men du anropar den inte. Rad fyra borde vara ett metodanrop, och inte en uträkning.
Det andra är att matematiken är fel. Arean av en cirkel är PI*(r^2), och omkretsen är 2*r*PI. Du har använt formeln för omkrets och inte area.

Tack, fixade den första nu men den andra:

Scanner input=new Scanner(System.in); System.out.print("Skriv in radien: "); double radie=input.nextDouble(); double area = (radie); System.out.println("Arean är: "+area); } static double area(double radie) { double svar=Math.PI * radie*radie; return svar; } }

Funkar inte?

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Feb 2009

@toh

Scanner input = new Scanner(System.in); System.out.print("Skriv in radien: "); double radie = input.nextDouble(); double area = raknaArea(radie) // Du måste anropa metoden med radien som parameter System.out.println("Arean är: " + area); } static double raknaArea(double r) { double svar = Math.PI*r*r return svar } }

NZXT H2, OCZ ModXStream-PRO 600W, MSI P67A-C45, Intel i5 2500K @ 4.4GHz, Gigabyte GTX 460, 4GB Corsair Vengeance DDR3 1600MHz CL9 (2x2GB), OCZ Agility 60GB, Seagate Barracuda 250GB, 2x Western Digital Caviar 1TB

Trädvy Permalänk
Medlem
Registrerad
Apr 2017
Skrivet av Maldergho:

@toh

Scanner input = new Scanner(System.in); System.out.print("Skriv in radien: "); double radie = input.nextDouble(); double area = raknaArea(radie) // Du måste anropa metoden med radien som parameter System.out.println("Arean är: " + area); } static double raknaArea(double r) { double svar = Math.PI*r*r return svar } }

Fungerar det att skriva " r "istället på allt eller visar den felaktigt svar då?

Scanner input = new Scanner(System.in); System.out.print("Skriv in radien: "); double r = input.nextDouble(); double area = raknaArea(r); System.out.println("Arean är: " + area); } static double raknaArea(double r) { double svar = Math.PI*r*r; return svar; } }

ORGINALKODEN

Scanner input = new Scanner(System.in); System.out.print("Skriv in radien: "); double radie = input.nextDouble(); double area = raknaArea(radie); System.out.println("Arean är: " + area); } static double raknaArea(double r) { double svar = Math.PI*r*r; return svar; } }

Vilken av koderna är rätt?

Trädvy Permalänk
Medlem
Plats
Vid datorn
Registrerad
Aug 2006

@toh: För flera tal borde du ha något i stil med (ej riktigt komplett kod)

//Information som måste finnas kvar efter varje "varv" int nrOfInputs = 0; double average = 0; //Loopa för evigt while(true) { System.out.println("Input a number"); double input = Scanner.nextDouble(); nrOfInputs++; //Räkna ut nytt medelvärde givet inputen, tidigare medelvärdet och antal medelvärden average = average(input, average, nrOfInputs); System.out.println("The current average is " + average); } double average(double input, double average, int nrOfInputs) { //Då medelvärdet är (tal1 + tal2 + tal3 ... +talN)/N så kan det också skrivas tal1/N + tal2/N + tal3/N. //'nrOfInputs' är samma sak som N i ekvationen, och talN är samma sak som 'input' därför blir nya medelvärdet bara //föregående medelvärdet ('average') adderat med nya medelvärdet 'input' delat med antalt inputs 'nrOfInputs' return average + input/nrOfInputs; }

In the end what separates a man from a slave?
Money? Power? No... A man chooses, a slave obeys.
ASUS Z170M-PLUS || Intel Core i7 6700k @ 4,7GHz || 64GB 2133MHz Corsair RAM || MSI NVIDIA RTX 2070 Gaming Z 8GB || Bifenix Prodigy M || 2x CZ TR150 480GB RAID 0 || BeQuiet DarkRock Pro

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Feb 2009
Skrivet av toh:

Fungerar det att skriva " r "istället på allt eller visar den felaktigt svar då?

Scanner input = new Scanner(System.in); System.out.print("Skriv in radien: "); double r = input.nextDouble(); double area = raknaArea(r); System.out.println("Arean är: " + area); } static double raknaArea(double r) { double svar = Math.PI*r*r; return svar; } }

ORGINALKODEN

Scanner input = new Scanner(System.in); System.out.print("Skriv in radien: "); double radie = input.nextDouble(); double area = raknaArea(radie); System.out.println("Arean är: " + area); } static double raknaArea(double r) { double svar = Math.PI*r*r; return svar; } }

Vilken av koderna är rätt?

Båda två funkar. I metoden är det en lokal variabel som används, så det spelar ingen roll om de heter samma sak eller olika.
Exempel: i originalkoden är r och radie två olika variabler, som är helt skilda från varandra. I din ändrade kod så har du alltså två olika variabler som båda heter r, men de är fortfarande skilda från varandra.

NZXT H2, OCZ ModXStream-PRO 600W, MSI P67A-C45, Intel i5 2500K @ 4.4GHz, Gigabyte GTX 460, 4GB Corsair Vengeance DDR3 1600MHz CL9 (2x2GB), OCZ Agility 60GB, Seagate Barracuda 250GB, 2x Western Digital Caviar 1TB