© 1999-2003, Flemming Koch Jensen
Alle rettigheder forbeholdtSelektion
Vejledende løsninger
1
A: 5 <= 5 && 5 != 8
true && true
B: 5 == 5 || 5 == 8 && 3 == 3
true || false && true
true || false
C: 5 / 8 > 3 / 5
0 > 0
D: !( 5 != 8 - 3 ) == false
!( 5 != 5 ) == false
!false == false
true == false
E: 2 * 5 != 5 || 5 == 0
10 != 5 || 5 == 0
true || false
F: ! true || ! false
false || true
De to sidste (E og F) er tautologier. 2
class Selektion_2 { public static void main( String[] argv ) { int x, y; x = 41; y = 67; if ( x + y > 100 ) System.out.println( "Summen er større end hundrede" ); } } 3
class Selektion_3 { public static void main( String[] argv ) { int first, second; first = 5; second = 8; if ( first > second ) System.out.println( first ); else System.out.println( second ); } } 4
class Selektion_4 { public static void main( String[] argv ) { int first, second, third; first = 5; second = 8; third = 3; if ( first >= second && first >= third ) System.out.println( first ); else if ( second >= first && second >= third ) System.out.println( second ); else System.out.println( third ); } }Ekstraopgave: Giv et eksempel på værdier for first, second og third, for hvilke dette program ikke ville virke, hvis der havde været anvendt > i stedet for >=
Svaret finder du nederst på siden. 5
class Selektion_5a { public static void main( String[] argv ) { int x = 62; if ( 0 <= x && x <= 9 ) System.out.println( x + " tilhører intervallet [0:9]" ); else if ( 10 <= x && x <= 19 ) System.out.println( x + " tilhører intervallet [10:19]" ); else if ( 20 <= x && x <= 29 ) System.out.println( x + " tilhører intervallet [20:29]" ); else if ( 30 <= x && x <= 39 ) System.out.println( x + " tilhører intervallet [30:39]" ); else if ( 40 <= x && x <= 49 ) System.out.println( x + " tilhører intervallet [40:49]" ); else if ( 50 <= x && x <= 59 ) System.out.println( x + " tilhører intervallet [50:59]" ); else if ( 60 <= x && x <= 69 ) System.out.println( x + " tilhører intervallet [60:69]" ); else if ( 70 <= x && x <= 79 ) System.out.println( x + " tilhører intervallet [70:79]" ); else if ( 80 <= x && x <= 89 ) System.out.println( x + " tilhører intervallet [80:89]" ); else System.out.println( x + " tilhører intervallet [90:99]" ); } }Eller smartere (med idéen fra hint'et):
class Selektion_5b { public static void main( String[] argv ) { int x = 62; int tier = x/10; if ( tier > 0 ) System.out.println( x + " tilhører [" + tier + "0:" + tier + "9]" ); else System.out.println( x + " tilhører intervallet [0:9]" ); } } 6
class Selektion_6a { public static void main( String[] argv ) { int x, y, z; x = 5; y = 8; z = 3; if ( x >= y && x >= z ) // x er størst (det er ikke x) if ( z <= y ) // z er mindst (det er ikke z) System.out.println( y ); else // y er mindst (det er ikke y) System.out.println( z ); else if ( y >= x && y >= z ) // y er størst (det er ikke y) if ( z <= x ) // z er mindst (det er ikke z) System.out.println( x ); else // x er mindst (det er ikke x) System.out.println( z ); else // z er størst (det er ikke z) if ( y <= x ) // y er mindst (det er ikke y) System.out.println( x ); else // x er mindst (det er ikke x) System.out.println( y ); } }Man kan dog formindske antallet af if-sætninger; hvis man til gengæld vil acceptere større boolske udtryk:
class Selektion_6b { public static void main( String[] argv ) { int x, y, z; x = 5; y = 8; z = 3; if ( x>=y && y>=z || z>=y && y>=x ) System.out.println( y ); else if ( y>=x && x>=z || z>=x && x>=y ) System.out.println( x ); else System.out.println( z ); } } 7
class Selektion_7 { public static void main( String[] argv ) { int x = 5; int y = 8; int dif = x - y; if ( dif < 0 ) dif = -dif; if ( dif > 10 ) System.out.println( "Forskellen er mere end ti" ); else System.out.println( "Forskellen er ikke mere end ti" ); } } 8
class Selektion_8 { public static void main( String[] argv ) { int øjne = 2; switch ( øjne ) { case 1: System.out.println( "Det er en etter" ); break; case 2: System.out.println( "Det er en toer" ); break; case 3: System.out.println( "Det er en treer" ); break; case 4: System.out.println( "Det er en firer" ); break; case 5: System.out.println( "Det er en femmer" ); break; case 6: System.out.println( "Det er en sekser" ); break; default: System.out.println( "Forkert antal øjne" ); break; } } }Svaret på ekstraopgaven i opgave 4:
Når first==second og first>third, vil den fejlagtigt udskrive third.