Gå til innhold

Legge sammen tall opp til en grenseverdi i java?


Anbefalte innlegg

Skrevet (endret)

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.

Endret av apwr
Videoannonse
Annonse
Skrevet (endret)
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
Skrevet

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?

Skrevet

     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

Skrevet (endret)

Du må forandre: system.exit(0); til System.exit(0);

 

Du mangler en start krøllparantes { til forløkken.

Endret av aleh
Skrevet (endret)

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?

Endret av apwr
Skrevet (endret)

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
Skrevet (endret)
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
Skrevet

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;

Skrevet

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

Skrevet

Skal du finne antall partall og antall oddetall, eller skal du summere sammen alle partallene for seg og oddetallene for seg?

 

if (partall) partall++;

else oddetall++;

 

eller

if (partall) partall+=partall;

else oddetall+=oddetall

Skrevet (endret)

Jeg skal finne antall partall og oddetall. Jeg klarer ikke finne ut hvordan hele denne beregningsmåten skal settes opp. Kan du hjelpe meg?

Endret av apwr
Skrevet

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!");
}

Skrevet

Jeg tror kanskje du misforstår litt. Jeg skal ikke skrive ut "partall", "oddetall" osv, men antall odde- og partall.

F.eks slik:

 

"5 partall og 7 oddetall"

 

Vet du hvordan jeg løser dette?

Skrevet (endret)

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
Skrevet

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.");
}
}

Skrevet (endret)

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

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