Xelenze Skrevet 4. september 2012 Del Skrevet 4. september 2012 Jeg har som en oppgave å lage et program som skriver ut differansen av det høyeste og laveste tallet, av 3 tall. Dette er hva jeg har gjort sålangt. Jeg vet det er en del feil her også, men det er hovedsakelig den ene feilen som jeg har stresset litt med. Jeg anntar at jeg kanskje ikke kan skrive det på denne måten? har jeg misforstått dette ganske mye eller? Ville vært fint med et svar som sier hvordan jeg kunne gjort det annerledes. Jeg får feil på 'else' without 'if'. import java.util.Scanner; class talldifferanse { public static void main(String[] args) { // Her skriver vi inn dataene våre int tall1; int tall2; int tall3; int sum; Scanner tastatur = new Scanner(System.in); // Her forteller vi at vi skal bruke tastatur. System.out.print("Angi et tall: "); tall1 = tastatur.nextInt(); System.out.print("Angi et tall: "); tall2 = tastatur.nextInt(); System.out.print("Angi et tall: "); tall3 = tastatur.nextInt(); if( tall1>=tall2 && tall2>=tall3); {sum=tall3-tall1; System.out.printf("Differansen mellom det største og minste tallet er %d%n", sum); } else if { tall2>=tall1 && tall3<=tall1); sum=tall3-tall2; System.out.printf("Differansen mellom det største og minste tallet er %d%n", sum); } ( tall3>=tall2 && tall1<=tall2); sum=tall3-tall1; System.out.printf("Differansen mellom det største og minste tallet er %d%n", sum); } } Lenke til kommentar
Thorsen Skrevet 4. september 2012 Del Skrevet 4. september 2012 else if { tall2>=tall1 && tall3<=tall1); sum=tall3-tall2; System.out.printf("Differansen mellom det største og minste tallet er %d%n", sum); } Tell antall parenteser her..... Lenke til kommentar
slacky Skrevet 4. september 2012 Del Skrevet 4. september 2012 (endret) Det kan gjøres veldig enkelt ved å bruke Math.min() og Math.max() public static void main(int x, int y) { int max = Math.max(x, y); int min = Math.min(x, y); System.out.print(max-min); } Men, noe slik kan sikkert formuleres lett i Java: def diff(list): high = low = list[0] for num in range(len(list)): high = max(high, list[num]) low = min(low, list[num]) return high-low print diff([45,12,64,62,21,24,32,76,22,23,5,15,17]) Endret 7. januar 2013 av warpie Lenke til kommentar
Kiff Skrevet 5. september 2012 Del Skrevet 5. september 2012 (endret) private static int highLowDiff(int... input) { int min = input[0]; int max = input[0]; for (int current : input) { if (current < min) { min = current; } if (current > max) { max = current; } } return max - min; } kall den med highLowDiff(tall1,tall2,tall3) Edit: Litt tekst Utifra oppgaveteksten og løsningen så antar jeg at du har nettopp begynt å programmere Et lite tips: Forslaget ditt løser problemet, men må endre hvis det f.eks neste gang er snakk om 4 tall. Og så igjen hvis det er snakk om 5 tall. osv. Hvis du prøver å løse problemet mer generelt så får du som oftest bedre kode (og bedre karakter). I dette tilfelle kan du f.eks bruke en array (tabell) og løse det samme problemet for så mange tall du vil. Endret 5. september 2012 av Kiff Lenke til kommentar
fleskesvor Skrevet 6. september 2012 Del Skrevet 6. september 2012 (endret) Varargs som ble introdusert med Java 5.0 er en også en fin måte å lage en hjelpemetode til å løse dette problemet, selv om det strengt tatt ikke er nødvendig når du har et gitt antall tall du skal sammenligne: public int diff(Integer... arguments) { if (arguments.length &--#60; 1) return 0; Arrays.sort(arguments); return arguments[arguments.length - 1] - arguments[0]; } Kalles med f.eks.: diff(23); diff(43, 982); diff(); diff(9233, 5, 1, 13, 3453); EDIT: Så ikke at Kiff allerede brukte dette i svaret over, så da ble dette litt meningsløst. Ser ikke noen mulighet for å slette innlegget mitt...? Endret 6. september 2012 av fleskesvor 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å