Permalänk
Medlem

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; } }

Permalänk
Medlem

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.

Permalänk
Medlem
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?

Permalänk
Medlem

@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 } }

Permalänk
Medlem
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?

Permalänk
Medlem

@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; }

Visa signatur

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

Permalänk
Medlem
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.