Gå til innhold

[Løst] Hvorfor blir det feil sum her?


Anbefalte innlegg

Skrevet

Hei!

 

Denne while loopen skal addere alle tall mellom 1 og 10.

Dette er i mitt hode 55 (1+2+3+4+5+6+7+8+9+10).

 

Men koden min nedenfor gir svaret 66... how come? :hmm:

public class Test2 
{
	public static void main(String[] args) 
	{
		int x = 0;
		int sum = 0;
		
		while(x <= 10)
		{
			++x;
			sum += x;
		}
		System.out.println(sum);
	}
}
Videoannonse
Annonse
Skrevet (endret)

tror det blir fordi du går fra 0 til 10 som er 11 steg.

 

du kan fjerne "=" tegnet, da teller den opp til 9 som blir 10 steg.

 

eller du kan sette x = 1 (men med samme kode), osv

Endret av cronbach alpha
Skrevet

x = 1 med samme kode vil nok ikke fungere siden x++ skjer før addisjonen. Det som skjer da er at x blir satt til 2 først før den begynnere å summere, og sluttresultatet vil bli 54 siden ett-tallet er hoppet over.

Skrevet (endret)

Det er fordi du har med sum += 11;

 

Når x blir 10, så sjekker den om den er innenfor, og den er (x er under eller lik 10), så øker x til 11, adderer til sum, også hopper ut av while-loopen.

 

Du må enten skifte til <= 9, eller < 10

 

Eventuelt skifte rekkefølge på ++x og sum += x, slik at den adderer summen før den øker seg selv.

Endret av Fred7555
Skrevet (endret)

Et problem til her...

Her blir bruker bedt om å skrive inn et heltall 10 ganger, så skal programmet si hvilket tall som var størst.

 

Men... hvis jeg skriver inn f.eks 1,2,3,4,5,6,7,8,9 og 10, så sier programmet at 15 var det største tallet :confused:

 

Hvis jeg skriver inn 10,20,30,40,50,60,70,80,90, og 100, så sier programmet at 150 var det største tallet...

 

Noen som vet hva som er feil?

import javax.swing.JOptionPane; 
public class Test
{
	public static void main(String[] args) 
	{
		int størst = 0;
		
		for(int x = 0; x < 10; x++)
		{
			String spm = JOptionPane.showInputDialog
                                     ("Skriv inn et heltall: ");

			int tall = Integer.parseInt(spm);
			
			if (tall > størst) størst += tall;
		}
		
		JOptionPane.showMessageDialog
                (null, "Det største tallet var: " + størst);
	}
}

Endret av Defo
Skrevet (endret)

Først og fremst:

 

if (tall > størst) størst += tall;

 

Her skal du vel ikke bruke +=, men bare =. Du skal sette tallet til det største, ikke plusse på det forrige tallet.

Endret av MrLG
Skrevet

 

Et problem til her...

 

Her blir bruker bedt om å skrive inn et heltall 10 ganger, så skal programmet si hvilket tall som var størst.

 

Men... hvis jeg skriver inn f.eks 1,2,3,4,5,6,7,8,9 og 10, så sier programmet at 15 var det største tallet :confused:

 

Hvis jeg skriver inn 10,20,30,40,50,60,70,80,90, og 100, så sier programmet at 150 var det største tallet...

 

Noen som vet hva som er feil?



import javax.swing.JOptionPane; 
public class Test
{
	public static void main(String[] args) 
	{
		int størst = 0;
		
		for(int x = 0; x < 10; x++)
		{
			String spm = JOptionPane.showInputDialog
                                     ("Skriv inn et heltall: ");

			int tall = Integer.parseInt(spm);
			
			if (tall > størst) størst += tall;
		}
		
		JOptionPane.showMessageDialog
                (null, "Det største tallet var: " + størst);
	}
}

"+=" legger det nye "størst" til det gamle. Du må sette "størst = tall" i stedet.

Skrevet

Først og fremst:

 

if (tall > størst) størst += tall;

 

Her skal du vel ikke bruke +=, men bare =. Du skal sette tallet til det største, ikke plusse på det forrige tallet.

 

Såklart... x) Takker!

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