Gå til innhold

Summere vilkårlig antall heltall?


Anbefalte innlegg

Videoannonse
Annonse

Takker for svar, Qwark!

 

Det jeg skal gjøre er å skrive inn et uvisst antall heltall (int) ved hjelp av DOS. La oss f.eks si at jeg bruker klassen Scanner tastatur under java.util.Scanner.

 

Programmet må så konvertere inputtene til heltall (parsing), og deretter summere alle innleste tall.

 

Finnes det ikke en enkel måte å summere alle slike innleste tall?

Det jeg kan gjøre er å skrive følgende:

 

int tall1 = tastatur.nextInt();

int tall2 = tastatur.nextInt();

osv

osv

 

Men jeg vet ikke hvor mange tall som leses inn, det kan jo være tusen forskjellige tall for den del. Noen tips til hvordan jeg kan gjøre dette?

Lenke til kommentar

Noe slikt kansje


import java.util.Scanner;
public class SumMain {
   public static Scanner scan = new Scanner(System.in);
   
   public static void main(String[] args) {
         //kaller metoden som leser tall og kalkulerer
         dimSum();
   }
   public static void dimSum(){
       int sumTot = 0;
       int in = 0;
       do{
           System.out.print("Skriv inn tall eller skriv en bokstav for å avslutte\n");
           try {
               //Leser tallet som er tastet inn
                in = scan.nextInt();
           } catch (Exception ex) {
               //Om du ikke har tastet inn en tall så får du Exception fordi nextInt vil ha                              i                   inn et tall
                System.exit(0);
           }   
           //plusser på siste innskrevne tall til totalen         
           sumTot += in;
           System.out.println("Totalsummen er naa " + sumTot);
       }while(scan.hasNext());
   }
}

Endret av Qwark
Lenke til kommentar

Takker for svar, Qwark og ratata! Dette fungerte supert!

 

Qwark, jeg hadde satt stor pris på om du hadde giddet å forklare hva som skjer i denne koden. Føler jeg henger brukbart med på noe, men noen steder faller jeg litt av.

 

Hva om jeg i første omgang kun skal skrive inn en rekke tall, for deretter å printe ut summen av alle innleste tall i etterkant?

Endret av apwr
Lenke til kommentar
Hva om jeg i første omgang kun  skal skrive inn en rekke tall, for deretter å printe ut summen av alle innleste tall i etterkant?

7739357[/snapback]

Det er en fordel å vite hvor mange tall du skal ha, fordi det er hensiktsmessig å lagre tallene i en tabell. Problemet er når man skal opprette tabeller: man må vite størrelsen. (Senere kommer du sikkert til å lære om dynamiske arrays, men det er ikke før senere)

 

Men er det programmet som skal be brukeren taste inn x antall tall, eller skal de angis samtidig som man starter programmet? I terminalen kan man nemlig skrive java MittProrgam 3 45 13 435 23 67 1 45 345 34 og da vil alle tallene havne i den tabellen som man deklarerer i main metoden (public static void main(String[] args){ /* ... */ }). Mao: i såfall kan du iterere gjennom args-tabellen for å regne ut tallene.

Klikk for å se/fjerne innholdet nedenfor
int sum = 0;
for(int i=0; i<args.lenght; i++){
   //legger til verdien i tabellplass nr i til summen:
   sum = sum + args[i]; 
}
System.out.println("Summen av tallene er " + sum);

 

Hvis det derimot er programmet som skal be brukeren om å taste inn tall, så kan du bruke metdoen til Qwark. Har du dårlig med kunnskaper til try/catch så kan du kanskje løse det på en annen måte:

1: generer et tilfeldig tall som er antall ganger tall som skal skrives inn

2: for-løkke som ligner på den jeg postet over her (bytt ut args.length med tallet fra pkt 1)

3: innhold i løkken: a) be bruker taste inn tall. b) sum = sum + tall fra a

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å
×
×
  • Opprett ny...