Gå til innhold

Legge sammen tall opp til en grenseverdi i java?


Anbefalte innlegg

Videoannonse
Annonse
Hvordan legger man sammen alle tall fra 1 til og med et tilfeldig innskrevet tall i java?

Skriver jeg inn tallet 10 f.eks, skal både 1,2,3,4,5,6,7,8,9 og 10 summeres.

6906481[/snapback]

 

Det enkleste er vel å lage en for-løkke fra 1 opp til x (hvor x er det inleste tallet)

 

int svar;

for(int i=1;i<=x;i++){

svar+=i;}

 

 

Edit: litt sen i vendingen, samme prinsipp

Endret av Traktormannen
Lenke til kommentar

Takk. Her er koden jeg har laget:

 

import javax.swing.JOptionPane;  // Hjelpeprogram for innlesing og utskrift


public class Oppgave2a
{
  public static void main(String[] args)
  {
  //-------------------------------------------------------------------
  //--- Variabeldeklarasjon -------------------------------------------
  //-------------------------------------------------------------------
  double    tall1;       // variabel som leser inn grensetall
  double    i;           // tellevariabel som styrer gjennomløp av sløyfe
  double    sum;         // variabel som inneholder sum av alle tall
                      //fra 1 til og med innlest tall1
  String inputTall1;  // teksttallvariant av tall1
     //-------------------------------------------------------------------
     //--- Leser inn verdier (som tekst)                               ---
     //-------------------------------------------------------------------
     inputTall1 = JOptionPane.showInputDialog( "Skriv inn grensetallet" );
     //-------------------------------------------------------------------
     //--- Konverterer teksttall til heltall -----------------------------
     //-------------------------------------------------------------------
     tall1 = Integer.parseInt( inputTall1 );
     //-------------------------------------------------------------------
     //--- Utfører beregning ---------------------------------------------
     //-------------------------------------------------------------------
     sum = 0;
     for (i = 1; i<=tall1; i++)
     sum = (tall1+i);
  } //endfor
  //-------------------------------------------------------------------
  //--- Skriver ut resultat                                         ---
     //-------------------------------------------------------------------
     JOptionPane.showMessageDialog(null,
                              "Summen av de innleste tall: " + sum,
                                "Resultat",JOptionPane.PLAIN_MESSAGE );
     //-------------------------------------------------------------------
     //--- Avslutter program                                           ---
     //-------------------------------------------------------------------
     system.exit(0);
     //-------------------------------------------------------------------
  }//end metode main()
}//end klasse Oppgave2a

 

 

Jeg får feilmeldinger på både JOptionPane.showMessageDialog, system.exit, end klasse og en reached end of file while parsing...

 

Hva er galt?

Lenke til kommentar

     sum = 0;

     for (i = 1; i<=tall1; i++)

     sum = (tall1+i);

  } //endfor

 

}//end klasse Oppgave2a[/code]

 

Vel, si at tallet er 4.

Da vil løkken din gi følgende

i=1, sum=(4+1)=5

i=2, sum=(4+2)=6

i=3, sum=(4+3)=7

i=4, sum=(4+4)=8

 

Svaret skulle ha vært (1+2+3+4)=10

Du må akkumulere svaret ditt etterhvert slik som sum=i+sum

Gitt at sum er satt til 0 og tallet er 4

 

i=1, sum=(0+1)=1

i=2, sum=(1+2)=3

i=3, sum=(3+3)=6

i=4, sum=(6+4)=10

 

Desverre en stund siden jeg har brukt java så lar noen andre ta resten

Lenke til kommentar

Ehm, du bruker jo tall1 (lite forklarende variabelnavn) til å si hvor langt opp du skal plusse...

 

Totalsummen havner jo i sum.

 

Edit: Du mangler klammeparantes rett etter for().

 

for (int i=0; i<tall1;i++) {
sum=sum+i;
}

Endret av drange
Lenke til kommentar
Dette her vil ikke funke:

 

sum = 0;

      for (i = 1; i<=tall1; i++)

      sum = i+ sum;

  } //endfor[code]

 

Jeg må jo ha med variabelen tall1 i summen. Hvordan fletter jeg inn denne?

 

Hvor mangler jeg krøllparentes?

[right][snapback]6906801[/snapback][/right]

Du må ha en startkrøllparantes: for (i = 1; i<=tall1; i++)[b]{[/b]

eller fjern sluttparanesen.

 

Jeg er ikke helt sikker hva du mener med at du må ha tall1 variebelen i summen fordi det skal funke i henhold til oppgaven nå.

 

EDIT: Da postet drange før meg, "but anyhow" tanken er den samme.

Endret av aleh
Lenke til kommentar

Som flere har sagt så må du ikke ha med tall1, den er jo ganske ubrukelig for den summasjonen du skal gjøre. Eneste den trengs for er å sette en øvre grense på for-løkken, altså hvor langt den skal gå.

 

Som andre har påpekt så ser det også mye mer ryddig ut å bruke:

 

sum += i;

 

i stedet for:

 

sum = sum + i;

Lenke til kommentar

Takk skal dere har, det funket!

Jeg har fått en ny oppgave her nå. Jeg skal skrive inn et uvistt antall tall. Innlesingen avsluttes når et negativt tall skrives inn (evt0). Tall som kan deles på to (heltall), skal deretter summeres, det skal også oddetallene.

Er det noen her som vet hvordan disse beregningene utføres?

 

Dette er hva jeg har til nå:

inputTallInn = JOptionPane.ShowMessageDialog(utTekst);
tallInn = Integer.parseInt(inputTallInn);
while (tallInn>0); {
if ((tall % 2) == 0)
{System.out.println("partall");}
else
{System.out.println("oddetall");}

Lenke til kommentar

Bruk % :

 

divident % divisor = rest

divident / divisor = heltall

 

divident = heltall * divisor + rest

 

I ditt tilfelle:

int rest = tall%2;
if (rest == 0) {
  System.out.println("Partall!");
} else if (rest == 1) {
  System.out.println("Oddetall!");
} else {
  System.out.println("Umulig!");
}

Lenke til kommentar

Du lager en teller som blir inkrementert når det blir tastet inn ett oddetall og en annen som gjør det samme med partall...

 

while(inputtall > 0) {

 

if(inputtall %2 != 0)

oddeteller++;

 

else

parteller++;

 

}

 

System.out.println(parteller + " partall og " + oddeteller + " oddetall");

 

 

Litt halvveis pseudokode, men du skjønner vel tegningen...

Endret av SBS
Lenke til kommentar

Med skje:

import java.util.Scanner;
class ParEllerOdde {
public static void main(String[] args) {
 int parteller = 0;
 int oddeteller = 0;
 int inntall;
 Scanner input = new Scanner(System.in);
 do {
 	System.out.print("Skriv inn tall, avslutt med 0 eller mindre: ");
 	inntall = input.nextInt();
 	if (inntall > 0) {
   if (inntall%2 == 0) {
   	parteller++;
   }
   else {
   	oddeteller++;
   }
 	}
 }while(inntall>0);
 System.out.println("Man fant jo " + parteller + " partall mot " + oddeteller + " oddetall.");
}
}

Lenke til kommentar

Nå skal vel alt stemme, men jeg får enda en feilmelding. Jeg har følgende kode:

 

import java.util.Scanner;
import javax.swing.JOptionPane;

public class Oppgave2b
{
public static void main(String[] args)
{

//---Variabeldeklarasjon-------------------------------------------------------------


int	tallInn;  //skal inneholde innleste tall
int	parteller;  //teller partall
int	oddeteller;  //teller oddetall
String	inputTallInn;  //tallInn i tekst
String	utTekst;  //variabel som inneholder tekststreng

//-----------------------------------------------------------------------------------

//---Initiering----------------------------------------------------------------------

parteller = 0;
oddeteller = 0;
utTekst = ("Skriv inn noen vilkårlige tall. Ved negativt tall avsluttes innlesingen.");
Scanner input = new Scanner(System.in);

//-----------------------------------------------------------------------------------

inputTallInn = JOptionPane.showInputDialog(utTekst);
tallInn      = Integer.parseInt( inputTallInn );

//---Beregninger---------------------------------------------------------------------

do {
 tallInn = input.nextInt();
 if (tallInn > 0) {
  if (tallInn%2 == 0) {
   parteller++;
  }
  else {
   oddeteller++;
  }
 }
}while(tallInn>0);

//---Utskrift-----------------------------------------------------------------------

JOptionPane.showMessageDialog(null,"Antall partall =" +parteller + "Antall oddetall =" +oddeteller,
                                   "Resultat",JOptionPane.PLAIN_MESSAGE );
//---avslutter program---------------------------------------------------------------

System.exit(0);

}//end metode main()
}//end klasse Oppgave2b

 

 

Feilmeldingen lyder:

tallInn = JOptionPane.showInputDialog(utTekst);

^(hake under venstrestil parentes)

 

Hva er feil?

Endret av apwr
Lenke til kommentar

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