Gå til innhold

Summere vilkårlig antall heltall?


Anbefalte innlegg

Skrevet

Hei!

 

Jeg skal summere et vilkårlig antall heltall lest inn via kommandolinjen. Summeringen skal foregå i en egen metode.

 

Noen som har noen gode starttips å komme med?

Videoannonse
Annonse
Skrevet

Noe slik du tenker på?

 

class enklasse{
    int total = 0;

    public void summere(int tall){
         total +=tall;
    }
    public getTotal(){
       return total;
    }
}

Skrevet

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?

Skrevet

Du kan jo summere og skrive ut summert tal etterkvart. Dersom du vil skrive inn eit vilkårlig antal tal lyt du lagre tala ein plass(f.eks tabell) og bruke ei for løkke til å summere etterpå.

Skrevet (endret)

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

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

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