The Hoff Skrevet 14. januar 2007 Del Skrevet 14. januar 2007 (endret) Jeg holder på med faget objektorientert programmering dette semester, noe som kan bli problematisk ettersom jeg suger i programmering. Uansett, her er oppgaven: Create an application that reads an arbitrary number of integer values and prints out the sum of the arguments. 3.1: Create an application class named Sum. 3.2: The application must have a correctly defined entry point; a main-method with correct name, modifiers and parameter. 3.3: Create a method named calculateSum that takes an array of int as parameter, calculates the sum of all the elements and returns the result as an int. 3.4: The application must correctly integer parse values passed as the command line arguments, use the calculateSum method to find the sum and print out the result to System.out using the following format: The sum is X, where X is the correct sum. If the command line arguments are 1, 2 and 3, the text which must be printed is The sum is 6. Her er mitt forsøk: public class Sum { public static void main(String[] arg) { int sum=0; public void calculateSum(String[] tab) { for(int i=0;i < tab.length;i++) { sum = sum + tab[i]; } System.out.println("Summen er: "+calculateSum(arg)); } } } Sliter litt med å forstå hvordan jeg skal initialisere en metode, samt metodekall. Fint hvis noen tar seg litt tid til å hjelpe. Edit: Setningen "public void calculateSum" er da mitt forsøk på å opprette en metode, jeg har ikke peiling på hva jeg egentlig gjør, setningen er kun sakset fra en annen tråd på forumet. Endret 14. januar 2007 av Rakkerunge Lenke til kommentar
___ Skrevet 14. januar 2007 Del Skrevet 14. januar 2007 (endret) public class Sum { public static void main(String[] arg) { int sum=0; public void calculateSum(String[] tab) { for(int i=0;i < tab.length;i++) { sum = sum + tab[i]; } System.out.println("Summen er: "+calculateSum(arg)); } } } Metoden calculateSum har du definert inni main-metoden. Det er feil. Den må flyttes ut. Dessuten bør du sende inn tabellen i klassens constructor, og ikke i selve calculateSum-metoden. Siden du ikke har definert noen constructor, må du også gjøre det. I summerings-løkka må du konvertere gjeldende element til en verdi av typen int. Dette gjøres enklest med new Integer(tab).intValue(); I main-metoden skal du teste klassen din. Du skal opprette en instans av den, og overføre argumentene fra kommandolinja. Så skal du kalle metoden calculateSum. Løsningsforslag: public class Sum { private String[] tab; public Sum(String[] tab) { this.tab = tab; } public void calculateSum() { int sum=0; for(int i=0;i < tab.length;i++) { sum = sum + new Integer(tab[i]).intValue(); } System.out.println("Summen er: " + sum); } public static void main(String[] arg) { Sum sum = new Sum(arg); sum.calculateSum(); } } Hilsen Werner [Edit]Æsj, jeg leste visst ikke oppgaven godt nok [/Edit] Endret 14. januar 2007 av wernie Lenke til kommentar
CruellaDeVille Skrevet 14. januar 2007 Del Skrevet 14. januar 2007 (endret) 3.3: Create a method named calculateSum that takes an array of int as parameter, calculates the sum of all the elements and returns the result as an int. Her er mitt forsøk: public class Sum { public static void main(String[] arg) { int sum=0; public void calculateSum(String[] tab) { for(int i=0;i < tab.length;i++) { sum = sum + tab[i]; } System.out.println("Summen er: "+calculateSum(arg)); } } } Sliter litt med å forstå hvordan jeg skal initialisere en metode, samt metodekall. Fint hvis noen tar seg litt tid til å hjelpe. Edit: Setningen "public void calculateSum" er da mitt forsøk på å opprette en metode, jeg har ikke peiling på hva jeg egentlig gjør, setningen er kun sakset fra en annen tråd på forumet. 7718920[/snapback] Oppgave 3.3 sier at du skal ta en array av int (tall) som parameter, siden det er enklest å regne med tall, vanskeligere om ikke helt umulig å regne med tekst. Måten en array (eller tabell) skrives på er int[]. String[] viser til en array av strenger (tekst). For å lage en metode må en tenke gjennom hva metoden skal gjøre. I ditt tilfelle skal den regne sammen innhold i alle indekser i tabellen og returnere summen. En endimensjonal array (eller tabell) kan tenkes på som en kommode - med en skuff i bredden og et kjent antall i høyden. Kommoden gies et navn - det er navn på arrayet ditt (eks int[] numbers), skuffene har også navn, det er tall inni klammeparantes eks numbers[3]. Da refererer jeg til den fjerde skuffen i kommoden, siden tellingen starter på 0, ikke 1). Innhold i skuffen er innhold i arrayet ditt. Har du en array av tall er det bare tall inni skuffen, har du en array av string (tekst) kan det bare være tekst i skuffen. Dette er både fordel og ulempe med arrays. Når du da skal lage metoden tenker du på metodesignatur. En metodesignatur er tilgangsmodifikator, (private - tilgjengelig bare inni klassen, public - tilgjengelig for kall utenfra klassen og protected, - tilsvarer private, men er også tilgjengelig for subklasser av klassen (ved arv)), returtype (String (tekst), String[] (tabell av tekst), int (et tall), int[] (en array av tall), double (flyttall), double[] (tabell av flyttall), boolean osv etc mm), metodenavn (gjerne et beskrivende navn, calulateSum er et godt navn!) og eventuelle parameter (i din oppgave står det eksplisitt en array av int'er). For å regne sammen alle tallene må du åpne alle skuffene i kommoden din, hente ut innhold og legge det til sum-tallet ditt. Dette kan du gjøre med en for-løkke (slik du har gjort). Når forløkken er ferdig løpt og du har fått en sum returnerer du denne. Jeg har laget et forslag, public class Sum { // valid entrypoint - mainmetode public static void main(String[] args){ // Oppretter en array av tall, med lengde 5 int[] numbers = new int[5]; int sum=0; // Fyller arrayet med tall fill(numbers); // beregner sum sum = calculateSum(numbers); // skriv ut resultat System.out.println("Summen er: "+ sum); } /* * Metode som fyller en array av tall * @param Array som skal fylles * @return Ferdig fyllt array av tall */ public static int[] fill(int[] numbers){ for(int i=0; i<numbers.length; i++){ numbers[i] = (int)(Math.random() * 10) + 1; } return numbers; } /* * Metode som beregner en sum * @param tabellen som inneholder tallene som skal summeres */ public static int calculateSum(int[] tab){ int sum =0; for (int i = 0; i < tab.length; i++) { sum += tab[i]; } return sum; } } [Edit] - Æsj, jeg er alltid for sein :/ Endret 14. januar 2007 av CruellaDeVille Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå