Gå til innhold

[Løst] En oppgave i java


Anbefalte innlegg

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
Videoannonse
Annonse

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 av warpie
Lenke til kommentar


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 av Kiff
Lenke til kommentar

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