Dagens föreläsning, kap 10 Kontrollstrukturer – if, switch, while, for, do-while Lazy evaluation Nästlade loopar och selektioner Pre- och postfix Read ahead Karlstads universitet, Johan Öfverberg if-sats int tal=10; if(tal==10) System.out.print("Talet är 10"); else System.out.print("talet är inte 10"); Om vi vill göra mer än en ”grej” då? – Vi skapar ett block Karlstads universitet, Johan Öfverberg switch-sats int tal=3; switch(tal){ case 1: System.out.println("Talet är 1"); case 2: System.out.println("Talet är 2"); case 3: System.out.println("Talet är 3"); case 4: System.out.println("Talet är 4"); default: System.out.println("Talet är inte 1-4"); } Vad blev det för fel här då? – break; Karlstads universitet, Johan Öfverberg Karlstads Universitet, Johan Öfverberg 1 while-loop int tal=0; while(tal<5){ System.out.println(tal); tal++; } Karlstads universitet, Johan Öfverberg for-loop int i; for(i=0;i<5;i++) System.out.println(i); Jämför for- och while loop – Visst är de lika? – Jag tycker att ni skall skilja på användningen av dem i alla fall Karlstads universitet, Johan Öfverberg do-while-loop int i=0; do{ System.out.println(i); i++; }while(i<5); Körs alltid minst 1 gång Semikolon efter uttrycket Karlstads universitet, Johan Öfverberg Karlstads Universitet, Johan Öfverberg 2 Pre- och postfix int tal1=4,tal2=6,sum; sum=++tal1 + tal2++; System.out.println("tal1 = ”\ +tal1+", tal2="+tal2+ \ ". Sum är "+ sum); Undvik detta genom att använda fler rader Karlstads universitet, Johan Öfverberg Lazy evaluation int tal=4,i=0; if((i==0)&&(tal++<8)) System.out.println("1:a System.out.println("Värdet if((i==0)||(tal++<8)) System.out.println("2:a System.out.println("Värdet if-satsen körs"); på tal är "+tal); if-satsen körs"); på tal är "+tal); Karlstads universitet, Johan Öfverberg Read ahead Gör det en gång innan loopen och sedan sist i varje varv! Scanner tgb=new Scanner(System.in); int tal; System.out.print("Ange tal: "); tal=tgb.nextInt(); while(tal!=0){ System.out.println("Talet är "+tal); System.out.print("Ange tal: "); tal=tgb.nextInt(); } System.out.print("Slut"); Karlstads universitet, Johan Öfverberg Karlstads Universitet, Johan Öfverberg 3 continue och break continue, avbryter loopen och fortsätter med nästa varv break, avbryter loopen och fortsätter med nästa sats efter loopen. Ingen av dem bör användas. Undantaget är break i switch (case) satser. Karlstads universitet, Johan Öfverberg Vad gör programmet? Random r=new Random(); int tal=r.nextInt(20); while(tal>0){ if((tal%2)==0) System.out.println("Talet är jämnt="+tal); else System.out.println("Talet är udda="+tal); tal--; } Karlstads universitet, Johan Öfverberg Karlstads Universitet, Johan Öfverberg 4