Permalänk
Medlem

Programerings problem

Skulle behöva lite hjälp med uppgift på blue java

Ett radioaktivt preparat som från början var 80g, sönderfaller med en hastighet som är 7% av den aktuella mängden per år. Skriv ett program som beräknar hur många år det tar tills minst hälften av preparatet sönderfalligt.

Någon som skulle kunna lösa? lyckas bara krasha programet xD.....

Tack på förhand.

Permalänk
Medlem

Låter som en skoluppgift. Vad har du gjort hittills? Posta lite kod så kan vi hjälpa dig korrigera den, ingen kommer göra dina uppgifter åt dig.

Permalänk
Medlem

Jo jag förstod det...

import java.util.Scanner;
public class forloop

{
static Scanner in = new Scanner(System.in); // skapa objekt
public static void main(String[] tjohej){

int sum = 80;
for(double i = 0.93;i <= 40; i+=0.93)
{

System.out.print(sum + " , " );

}
}

}

Det där karashade hela programmet så ja nu är jag fast....

Permalänk
Medlem

Du får nog utveckla lite... exakt hur "kraschar" det? Är det verkligen hela din kod?

Permalänk
Medlem

Haha ja asso det här är en jätte liten uppgift som ajg bara inte fattar men det står 80 80 80 80... osv gång på gång på gång så man får köra Control alt delete.
Fattar inte loopar....

Permalänk

Ta bort sista måsvingen aka krullparantes ( '}' )

Btw, du gör ingen beräkning i for-loopen, du skriver bara ut "80," ett antal gånger irad.

Edit: Du får nog läsa på lite mer i din bok...

Permalänk
Medlem

Tänk över hur din loop ser ut. Så här fungerar for-loopar:

for(startvärde;villkor;uppräkning){ // Gör det här så länge villkor är sant }

Som det är nu så kommer du skriva ut sum (som aldrig ändras) tills i är större än 40 (och med en ökning på 0,93 varje runda blir detta 43 gånger). Vad du troligtvis vill göra är att bara öka i med ett, och sedan göra någonting med sum varje runda istället.

Skrivet av Balls Of Steel:

Ta bort sista måsvingen aka krullparantes ( '}' )

Nej, den ska vara där.

Permalänk
Skrivet av You:

Tänk över hur din loop ser ut. Så här fungerar for-loopar:

for(startvärde;villkor;uppräkning){ // Gör det här så länge villkor är sant }

Som det är nu så kommer du skriva ut sum (som aldrig ändras) tills i är större än 40 (och med en ökning på 0,93 varje runda blir detta 43 gånger). Vad du troligtvis vill göra är att bara öka i med ett, och sedan göra någonting med sum varje runda istället.

Nej, den ska vara där.

Nej, man måste ha lika många { som }

Permalänk
Medlem
Skrivet av Balls Of Steel:

Nej, man måste ha lika många { som }

Ja, och det har han. Titta en gång till.

Permalänk
Skrivet av You:

Ja, och det har han. Titta en gång till.

Ah, nu ser jag att han inte har konsekvent placering av dem My bad!

Permalänk
Medlem

din integer 'i' skall inte ändras varje loop, för procentsatsen är ju alltid densamma?

Vad du däremod vill göra är ju multiplicera sum med din procentsats.

Vanlig högstadiematte!

for(double i = 0.93;sum <= 40; sum*=i) borde fungera? (är inte jätteinsatt)

Visa signatur

Outtröttlig, löpartokig besserwisser!

Bli vegan! För djuren, planeten, hälsan och våra barns skull!

Permalänk
Skrivet av NisseG91:

din integer 'i' skall inte ändras varje loop, för procentsatsen är ju alltid densamma?

Vad du däremod vill göra är ju multiplicera sum med din procentsats.

Vanlig högstadiematte!

for(double i = 0.93;sum <= 40; sum*=i) borde fungera? (är inte jätteinsatt)

Alltså, den variabeln som du sätter som start värde är den som skall avgöra om när loopen är avslutad och det är den variabeln som skall ökas i en for-loop. I annat fall så använder man en while loop, blir mer svårläst annars.

Permalänk

int years = 0;
for(double preparat = 1; preparat > 0.5; preparat *= 0.93) {
years++;
}
System.out.print(years);

Visa signatur

i5 750, asrock p55 extreme, corsair 4 gb 1600 mhz, hd5850, spinpoint f3, chieftec 750 w modulärt, fd define r2, 2 x 22"
hp nc8430 - asus eeepc 901 - mediaserver 2.4 GHz

Permalänk
Medlem

Har du lyckats lösa det?