Kommentarer Kommentarer påverkar inte programmet. /* BLOCKKOMMENTAR Programmet Skriver ut "Hello World!" på skärmen. Alla Java-program bygger på en liknande struktur. */ public class HelloWorld{ public static void main(String[] args){ //RADKOMMENTARER System.out.print("Hello World!");//Hello World! Skrivs ut på skärmen. } } Hello World! 2017-07-14 sida 1 Magnus Wärja Skillnaden mellan print och println Metoden print ställer sig ej på en ny rad efter att en textsträng skrivits ut. public class HelloWorld{ public static void main(String[] args){ System.out.print("Hello World!"); System.out.print("Hello World!"); System.out.print("Hello World!"); } } Hello World!Hello World!Hello World! Metoden println ställer sig på en ny rad efter att en textsträng skrivits ut. public class HelloWorld{ public static void main(String[] args){ System.out.println("Hello World!"); System.out.println("Hello World!"); System.out.println("Hello World!"); } } Hello World! Hello World! Hello World! 2017-07-14 sida 2 Magnus Wärja Konkatenering (+) Plustecknet (+) används för att konkatenera samman textsträngar. public class Konkatenering{ public static void main(String[] args){ //Två textsträngar kan konkateneras samman till en lång sträng System.out.println("Låt oss presentera några heliga " + "årtal för alla gaisare."); // En textsträng kan innehålla siffror System.out.println("Svenska cupmästare: 1942"); // Numeriska värden kan konkateneras till text System.out.println("Serievinnare och svenska " + "mästare: " + 1931 + " och " + 1954); } } Låt oss presentera några heliga årtal för alla gaisare: Svenska cupmästare: 1942 Serievinnare och svenska mästare: 1931 och 1954 2017-07-14 sida 3 Magnus Wärja Undantagstecken Kompelatorn vet ej hur ovanstående uttryck skall tolkas! Compile-time error System.out.println("Jag ropade "BINGO" hörde du inte det?"); Korrekt System.out.println("Jag ropade \"BINGO\" hörde du inte det?"); 2017-07-14 sida 4 Magnus Wärja Undantagstecken Undantagstecken Betydelse \b \t \n \r \" \' \\ Backsteg Tabb Ny rad Vagnsretur Dubbelt citattecken Enkelt citattecken Bakvänt snedsträck 2017-07-14 sida 5 Magnus Wärja Undantagstecken public class Undantagstecken{ public static void main(String[] args){ System.out.println("Roses are red,\n\tViolets are blue,\n" + "Sugar is sweet,\n\tBut I have \"commitment issues\",\n\t" + "So I'd rather just be friends\n\tat this point in our " + "relationship."); } } Roses are red, Violets are blue, Sugar is sweet, But I have "commitment issues", So I'd rather just be friends at this point in our relationship. 2017-07-14 sida 6 Magnus Wärja Variabler En variabel är ett namn kan ses som en plats, ett ”fack”, i datorns minne. En variabel måste deklareras genom specificering av variabelns namn och datatyp (vilken typ av information variabeln skall hålla i). int totalt; data typ variabelnamn Flera variabler kan deklareras samtidigt: int räknare, talEtt, talTva; //inte bra (svårläst) En varabel kan redan vid deklaration ges ett värde: int sum = 0; //Korrekt int bas = 32, max = 149; //inte bra (svårläst) 2017-07-14 sida 7 Magnus Wärja Variabeltilldelning public class Geometri{ public static void main (String[] args){ int sidor = 3; //Deklarering med initiering System.out.println ("En triangel har " + sidor + " sidor."); sidor = 4; //Variabeln tilldelas ett nytt värde System.out.println ("En kvadrat har " + sidor + " sidor."); } } En triangel har 3 sidor. En kvadrat har 4 sidor. 2017-07-14 sida 8 Magnus Wärja Variabler (Konstanter) En konstant skiljer sig från variabler genom att deras värde aldrig går att ändra. I Java används uttrycket final vid deklaration av en konstant. För att lätt känna igen en konstant i koden brukar de skrivas i versaler. final double MOMS = 1.25; _ _ _ public class beräknaPris{ public static void main(String[] args){ final double MOMS = 1.25; double summa; summa = MOMS * 100; System.out.print("Summan är: " + summa); } } Summan är : 125.0 2017-07-14 sida 9 Magnus Wärja Datatyper (Javas datatyper) Det finns åtta olika primitiva datatyper i Java. Fyra av dem representerar olika typer av heltal: byte, short, int, long Två av dem representerar flyttal: float, double En datatyp representerar bokstäver: char En datatyp representerar booleanska värden (sant/falskt): boolean 2017-07-14 sida 10 Magnus Wärja Variabler (Numeriska variabler) De olika numeriska datatyperna kräver olika mycket plats i datorns minne. Typ Utrymme Min värde Max värde byte short int long 8 bits 16 bits 32 bits 64 bits -128 -32,768 -2 147 483 648 < -9 x 1018 127 32,767 2 147 483 647 > 9 x 1018 float double 32 bits 64 bits +/- 3,4 x 1038 med 7 signifikanta siffror +/- 1,7 x 10308 med 15 signifikanta siffror 2017-07-14 sida 11 Magnus Wärja Variabler (char, boolean) För att lagra enskilda skrivbara tecken använder man den primitiva datatypen char. char teckenEtt; teckenEtt = 'A'; En variabel deklarerad som boolean kan antingen representera värdet ”false” eller värdet ”true”. Oftast deklareras en boolsk variabel vid tillfällen då variabeln kan skifta mellan två tillstånd t ex strömbrytare av / strömbrytare på. public class Char_boolean{ public static void main(String[ ] args){ char teckenEtt = 'A';; boolean strömbrytarePå = true; System.out.println(teckenEtt); System.out.println(strömbrytarePå); } } A true 2017-07-14 sida 12 Magnus Wärja Beräkningar (operatorer) Nedanstående tecken är vanliga operatorer för att utföra numeriska beräkningar. Addition Subtraktion Multiplikation Division (Restvärde 2017-07-14 + * / %) sida 13 Magnus Wärja Beräkningar Prioriteringen mellan operatorerna följer vanliga regler inom matematiken, Exempelvis: 1 + 2 * 3, tolkas som 1 + (2 * 3) och ger resultatet 7 a + b + c + d + e 1 2 3 4 a + b * c - d / e 3 1 4 2 a / (b + c) - d % e 2 1 4 3 a / (b * (c + (d - e))) 4 3 2 1 2017-07-14 sida 14 Magnus Wärja Beräkningar public class Beräkningar{ public static void main(String[] args){ System.out.println("5 + 5 = " + 5 + 5); //Använd paranteser vid beräkning!!! System.out.println("8 - 2 = " + (8 - 2)); System.out.println("4 * 5 = " + (4 * 5)); System.out.println("25 / 5 = " + (25 / 5)); System.out.println("(7 + 3) * 4 = " + ((7 + 3) * 4)); } } 5 + 5 = 55 8-2=6 4 * 5 = 20 25 / 5 = 5 (7 + 3) * 4 = 40 2017-07-14 sida 15 Magnus Wärja Operatorer för att öka och minska Uttrycket: tal++; är samma som: tal = tal + 1; Uttryck Operation Uttryckets värde tal++ ++tal tal---tal adderar 1 adderar 1 subtraherar 1 gamla värdet nya värdet gamla värdet nya värdet subtraherar 1 2017-07-14 sida 16 Magnus Wärja Operatorer för att öka och minska public class ÖkaMinska{ public static void main (String[] args){ int a = 5; int b = 5; int c = 10; System.out.println(a++); System.out.println(++b); //5 //6 System.out.println(a); System.out.println(b); //6 //6 System.out.println(c++ + ++c); //10+12 } } 5 6 6 6 22 2017-07-14 sida 17 Magnus Wärja Tilldelningsoperatorer Operator Exempel Motsvarar += -= *= /= %= x += y x -= y x *= y x /= y x %= y x=x+y x=x-y x=x*y x=x/y x=x%y Exempel: int summa = 100; int vara = 50; summa = summa + vara; // summa = 150 är samma som: summa += vara; 2017-07-14 // summa = 150 sida 18 Magnus Wärja Konvertera data Ibland kan det vara nödvändigt att konvertera ett värde av en viss datatyp till en annan. Nedanstående konvertering fungerar i alla situationer. Från Till byte short, int, long, float eller double short int, long, float eller double char int, long, float eller double int long, float eller double long float eller double float double 2017-07-14 sida 19 Magnus Wärja Konvertera data (casting) public class Konvertera{ public static void main(String[] args){ int antalGrupper = 6; int summaStudenter = 100; double studPerGrupp; studPerGrupp = (double) summaStudenter / antalGrupper; System.out.println("Stud. per grupp: " + studPerGrupp); System.out.println("Stud. per grupp: " + (int)studPerGrupp); } } Stud. per grupp: 16.666666 Stud. per grupp: 16 2017-07-14 sida 20 Magnus Wärja Klassen Scanner För att läsa in värden från terminalfönstret används en klass vid namn Scanner. Denna klass ligger i ett paket (util) och måste därför importeras. import java.util.Scanner; Du måste även deklarera referensvariabeln scan. Scanner scan = new Scanner (System.in); Kommunikationen med terminalföstret sker med hjälp av metoder. message = scan.nextLine(); Mer om metoder, klasser och paket diskuteras senare på denna delkurs. 2017-07-14 sida 21 Magnus Wärja Några av Klassen Scanners metoder Returnerar double Namn nextDouble() Läser in tecknen som en double. int nextInt () Läser in tecknen som en int. String 2017-07-14 nextLine() Läser in textsträngar sida 22 Magnus Wärja Klassen Scanner (exempel) import java.util.Scanner; public class Scannerdemo{ public static void main(String[] args){ Scanner scan = new Scanner (System.in); final int aktuelltÅr = 2008; int födelseår; int ålder; System.out.print("Vilket år är du född? ”); födelseår = scan.nextInt(); //1985 ålder = aktuelltÅr - födelseår; System.out.println("Du är " + ålder + " år gammal."); } } Vilket år är du född? 1985 Du är 22 år gammal. 2017-07-14 sida 23 Magnus Wärja Klasser och objekt Klass • • • Ett objekt är en instans av en klass. Av en klass kan man skapa flera instanser (objekt) med var för sig olika tillstånd. Man kan se objekt som svarta lådor där objektets metoder låter oss påverka objektets tillstånd utan att faktiskt känna till hur det går till, eller hur det ser ut, "under skalet”. Objektmetoder • • • • En metod är en definition av en viss händelse. Ett objekt (och ibland en klass) använder metoder för att vi skall kunna kommunicera med den. Det enda vi behöver veta om en metod är vilken typ av data vi behöver förse den med och vad vi får tillbaka. En TV har till exempel metoder i form av olika knappar. Genom att känna till knapparnas egenskaper kan vi genom att trycka på rätt knapp påverka en viss TV:s tillstånd. Klassmetoder • En del metoder kan användas genom klassnamnet istället för att skapa ett objekt av klassen. Dessa metoder kallas klassmetoder eller statiska metoder. Math-klassen innehåller många statiska metoder 2017-07-14 sida 24 Magnus Wärja Skapa objekt Objekt initieras (skapas, deklareras) på ett annat sätt än deklaration av primitiva datatyper. Klassdeklaration Parameter Anrop till konstruktor Scanner scan = Nytt objekts namn 2017-07-14 sida 25 new Scanner (System.in); Konstruktorn finns i klassen Scanner Magnus Wärja Klassen Strings konstruktor Operatorn new behövs ej när man skall skapa Stringobjekt (detta gäller enbart klassen String). public class Referensvariabler{ public static void main(String[] args){ String namn = new String("Anna Nilsson"); //Ett Stringobjekt kan skapas och initieras samtidigt String namn = "Anna Nilsson"; // eller som nedan: // String namn // namn = "Anna Nilsson"; System.out.println("namn: " + namn); } } namn: Anna Nilsson 2017-07-14 sida 26 Magnus Wärja Att använda metoder Objektmetoder • • • • En metod är en definition av en viss händelse. Ett objekt (och ibland en klass) använder metoder för att vi skall kunna kommunicera med den. Det enda vi behöver veta om en metod är vilken typ av data vi behöver förse den med och vad vi får tillbaka. En TV har till exempel metoder i form av olika knappar. Genom att känna till knapparnas egenskaper kan vi genom att trycka på rätt knapp påverka en viss TV:s tillstånd. 2017-07-14 sida 27 Magnus Wärja Använda klasser och objekt Till skillnad från primitiva datatyper har objekt specifika metoder. import java.util.Scanner; public class OH28{ public static void main(String[] args){ final int PENSION = 65; int ålder = 38; int årTillPension; Scanner scan = new Scanner(System.in); String namn; System.out.print("Vad heter du? "); namn = scan.nextLine(); System.out.print("Hur gammal är du? "); ålder = scan.nextInt(); Metodnamn (och ett metodanrop) Metodnamn (och ett metodanrop) namn = namn.toUpperCase(); Metodnamn (och ett metodanrop) årTillPension = PENSION - ålder; System.out.println(namn + ", du går i pension om: " + årTillPension + " år!"); } } Vad heter du? anna Hur gammal är du? 20 ANNA, du går i pension om: 45 år! 2017-07-14 sida 28 Magnus Wärja Att använda metoder Nedan ändvänds några av klassen Strings metoder public class AnvändaMetoder{ public static void main(String[] args){ String namn = "Anna Nilsson"; System.out.println("Antal tecken: " + namn.length()); System.out.println(”Namn: " + namn.toUpperCase()); } } Antal tecken: 12 Namn: ANNA NILSSON 2017-07-14 sida 29 Magnus Wärja Klassen Strings metoder Nedan ändvänds några av klassen Strings metoder public class Stringmetoder{ public static void main (String [] args){ int langd; String tecken; String personEtt = "Anna Nilsson"; String personTva = "Hans Månsson"; personEtt = personEtt.toUpperCase(); personTva = personTva.toLowerCase(); //ANNA NILSSON //hans månsson langd = personEtt.length(); tecken = personTva.substring(1,2); //12 //a personEtt = personEtt.replace('N','X'); personTva = personTva.substring(0,4); //AXXA XILSSOX //hans } } Metoder kan ta emot en till flera parametrar 2017-07-14 sida 30 Magnus Wärja Några av klassen Strings metoder Method Summary boolean contains(CharSequence s) Returns true if and only if this string contains the specified sequence of char values. boolean equals(Object anObject) Compares this string to the specified object. int indexOf(String str) Returns the index within this string of the first occurrence of the specified substring. int indexOf(String str, int fromIndex) Returns the index within this string of the first occurrence of the specified substring, starting at the specified index. int length() Returns the length of this string. String replace(String oldChar, String newChar) Returns a new string resulting from replacing all occurrences of oldChar in this string with newChar. String substring(int beginIndex) Returns a new string that is a substring of this string. String substring(int beginIndex, int endIndex) Returns a new string that is a substring of this string. String toLowerCase() Converts all of the characters in this String to lower case using the rules of the default locale. String toUpperCase() Converts all of the characters in this String to upper case using the rules of the default locale. 2017-07-14 sida 31 Magnus Wärja Paket Javas inbyggda klassbibliotek är organiserade i paket. Några av paketen specificeras nedan: Paket Syfte java.lang java.applet java.awt javax.swing java.net java.util javax.xml.parsers Generell support Skapar applets för webben Grafik och grafiska gränssnitt Ytterligare grafiska möjligheter och komponenter Nätverkskommunikation Allmänna ”nyttiga” klasser Hantering av XML dokument Alla java.lang-paketets klasser importeras automatiskt till programmet. Därför har import inte används när vi använt System- och String-klasserna i tidigare exempel. 2017-07-14 sida 32 Magnus Wärja Importera paket När du skall använda en klass som finns i ett paket behöver du importera paketet och ange adressen till den klass du vill använda: import java.util.Random; Med hjälp av asterisk (*) kan du importera alla klasser i ett paket: import java.util.*; 2017-07-14 sida 33 Magnus Wärja Importera klassen Random I java.util-paketet ingår Randomklassen vilken innehåller klasser som genererar olika slumpmässiga tal. import java.util.Random; public class Slumptal{ public static void main (String[] args){ Random slumptal = new Random(); int tal1; tal1 = slumptal.nextInt(); System.out.println ("Ett slumptal (integer): " + tal1); tal1 = slumptal.nextInt(7); System.out.println ("Från 0 till 6: " + tal1); tal1 = slumptal.nextInt(6) + 1; System.out.println ("Från 1 till 6: " + tal1); tal1 = slumptal.nextInt(20) - 10; System.out.println ("Från -10 till 9:" + tal1); } } 2017-07-14 sida 34 Ett slumptal (integer): 1213991402 Från 0 till 6: 2 Från 1 till 6: 1 Från -10 till 9: -2 Magnus Wärja Några av klassen Randoms metoder Random float nextFloat() Randoms a random number between 0.0 (inclusive) and 1.0 (exclusive). int nextInt() Randoms a random number that rangers over all possible int values (positive and negative). int nextInt(int num) Randoms a random number in the range 0 to num-1. 2017-07-14 sida 35 Magnus Wärja Klassmetoder (statiska metoder) Klassmetoder • En del metoder kan användas genom klassnamnet istället för att skapa ett objekt av klassen. Dessa metoder kallas klassmetoder eller statiska metoder. Math-klassen innehåller många statiska metoder. 2017-07-14 sida 36 Magnus Wärja Klassmetoder (statiska metoder) import java.util.Scanner; //Klassen Math ingår i java.lang-paketet, //import behövs därför ej göras.) public class BeraknaKvadratrot{ public static void main (String[ ] args){ double tal; double kvadratrot; Scanner scan = new Scanner (System.in); System.out.print ("Ange ett tal: "); tal = scan.nextDouble(); //EJ STATISK kvadratrot = Math.sqrt(tal); //STATISK (Klassnamnet anropas. Inget objekt har skapats) System.out.println ("Kvadratroten av talet är: " + kvadratrot); } } Ange ett tal: 25 Kvadratroten av talet är: 5.0 2017-07-14 sida 37 Magnus Wärja Några av klassen Math metoder Math static int abs(int a) Returns the absolute value of an int value. static double cos(double a) Returns the trigonometric cosine of an angle. static double sin(double a) Returns the trigonometric sine of an angle. static double tan(double a) Returns the trigonometric tangent of an angle. static double exp(double a) Returns Euler's number e raised to the power of a double value. static double pow(double a, double b) Returns the value of the first argument raised to the power of the second argument. static double random() Returns a double value with a positive sign, greater than or equal to 0.0 and less than 1.0. static double sqrt(double a) Returns the correctly rounded positive square root of a double value. 2017-07-14 sida 38 Magnus Wärja Formatering (NumberFormat) import java.util.Scanner; import java.text.NumberFormat; Ange kvantitet: 100 Ange pris: 25 Totalpris: 2500.0 Totalpris: 2 500,00 kr Totalpris med 25% rabatt är: 1 875,00 kr public class Formatering{ public static void main(String[] args){ final double RABATT = 0.25; int kvantitet; double pris; Scanner scan = new Scanner (System.in); NumberFormat fmt1 = NumberFormat.getCurrencyInstance(); NumberFormat fmt2 = NumberFormat.getPercentInstance(); System.out.print("Ange kvantitet: "); kvantitet = scan.nextInt(); System.out.print("Ange pris: "); pris = scan.nextDouble(); System.out.println("Totalpris: " + (kvantitet * pris)); System.out.println("Totalpris: " + fmt1.format(kvantitet * pris)); System.out.println("Totalpris med " + fmt2.format(RABATT) + " rabatt är: " + fmt1.format((kvantitet * pris) - ((kvantitet * pris) * RABATT))); } } 2017-07-14 sida 39 Magnus Wärja Några av klassen NumberFormats metoder NumberFormat String format(double number) Specialization of format. static NumberFormat getCurrencyInstance() Returns a currency format for the current default locale. static NumberFormat getPercentInstance() Returns a percentage format for the current default locale. 2017-07-14 sida 40 Magnus Wärja Formatering (DecimalFormat) import java.util.Scanner; import java.text.DecimalFormat; public class Formatering2{ public static void main(String[] args){ double tal1 =310; double tal2 = 3; Scanner scan = new Scanner (System.in); DecimalFormat fmt1 = new DecimalFormat("0.###"); Ange ett tal: 10 Ange ytterligare ett tal: 3 10.0/3.0 = 3.3333333333333335 Med klassen DecimalFormat 10.0/3.0 = 3,333 System.out.print("Ange ett tal: "); tal1 = scan.nextDouble(); System.out.print("Ange ytterligare ett tal: "); tal2 = scan.nextDouble(); System.out.println(tal1 +"/" + tal2 + " = " + (tal1/tal2)); System.out.println(); System.out.println("Med klassen DecimalFormat"); System.out.println(tal1 +"/" + tal2 + " = " + fmt1.format(tal1/tal2)); } } 2017-07-14 sida 41 Magnus Wärja Några av klassen DecimalFormats metoder DecimalFormat Konstruktor DecimalFormat(String pattern) Creates a DecimalFormat using the given pattern and the symbols for the default locale. Metoder void String applyPattern(String pattern) Apply the given pattern to this Format object. format(double number) Returns a string containing the specified number formatted according to the current pattern. 2017-07-14 sida 42 Magnus Wärja Wrapper-klass Det finns en så kallad wrapper-klass för var och en av Javas primitiva datatyper(tex int > Integer, float > Float, double > Double). I dessa klasser finns det två mycket användbara metoder (särskilt vid gränssnittsprogrammering). Metoden parseXXX (tex x = Double.parseDouble(enTextsträng)) skapar en primitiv datatyp av ett Stringobjekt. Metoden toString (tex Double.toString(enDouble)) skapar ett Stringobjekt av en primitiv datatyp. public class BeraknaMoms{ public static void main (String[ ] args){ Scanner scan = new Scanner (System.in); String pNr; int födelseår; String resultat; System.out.print ("Skriv in ditt personnummer: "); pNr = scan.nextLine(); pNr = pNr.substring(0,2); födelseår = Integer.parseInt(pNr); //String till int! resultat = Integer.toString(108-födelseår); //int till String! System.out.println ("Du blir/blev " + resultat + " år " + "i år"); } Skriv in ditt personnummer: 800202-1234 Du blir/blev 38 år i år } 2017-07-14 sida 43 Magnus Wärja 2017-07-14 sida 44 Magnus Wärja Boolska uttryck En villkorssats använder ofta någon av Javas relationsoperatorer, som alla returnerar boolska svar, dvs true eller false : == != < > <= >= lika med inte lika med mindre än större än mindre än eller lika med större än eller lika med Notera skillnaden mellan “lika med”-operatorn (==) och tilldelningsoperatorn (=) 2017-07-14 sida 45 Magnus Wärja Boolska uttryck 2017-07-14 56 == 56 Sant ’a’ == ’a’ Sant ’a’ == ’A’ Falskt ’x’ != ’z’ Sant 45 < 80 Sant 2 >= 6 Falskt 2 >= 2 Sant sida 46 Magnus Wärja Logiska uttryck Det logiska NOT - uttrycket: !a är sant om a är falskt och falskt om a är sant Det logiska AND - uttrycket: a && b är sant om både a och b är sant. Annars falskt Det logiska OR - uttrycket a || b är sant om a eller b eller båda är sant. Annars falskt 2017-07-14 sida 47 Magnus Wärja Selektion (if- sats) if ( villkor ) sats villkor sant falskt sats 2017-07-14 sida 48 Magnus Wärja Selektion (if- else- sats) import java.util.Scanner; public class IfSats1{ public static void main(String[] args){ Scanner scan = new Scanner(System.in); final double TIMLÖN = 100; final int VECKA = 40; int timmar; double utbetala; System.out.print("Skriv in veckans arbetade timmar: "); timmar = scan.nextInt(); if (timmar > VECKA){ utbetala = VECKA * TIMLÖN + (timmar - VECKA) * (TIMLÖN * 1.5); } else{ utbetala = timmar * TIMLÖN; } System.out.println("Veckans lön: " + utbetala + " kr " ); } Skriv in veckans arbetade timmar: 80 Veckans lön: 10000.0 kr } 2017-07-14 sida 49 Magnus Wärja Selektion (if- else- sats) import java.util.Scanner; public class IfSats2{ public static void main(String[] args){ Scanner scan = new Scanner(System.in); int poäng; int betyg; System.out.print("Skriv in ditt tentaresultat (0 to 100): "); poäng = scan.nextInt(); betyg = poäng / 10; if (betyg > 7){ System.out.println("Ditt betyg är VG"); } else if (betyg < 5){ System.out.println("Ditt betyg är U"); } else{ System.out.println("Ditt betyg är G"); } } } 2017-07-14 sida 50 Skriv in ditt tentaresultat (0 to 100): 85 Ditt betyg är VG Magnus Wärja Blocksatser import java.util.Scanner; public class Gissa{ public static void main(String[] args){ Scanner scan = new Scanner(System.in); final int SVAR = 4; int gissatNummer; System.out.print("Gissa ett nummer mellan 1 och 10: "); gissatNummer = scan.nextInt(); if (gissatNummer == SVAR) System.out.println("BRA, RÄTT NUMMER !!!"); else{ System.out.println("Ditt svar var tyvärr fel."); System.out.println("Rätt nummer var: " + SVAR); } Block } } Gissa ett nummer mellan 1 och 10: 7 Ditt svar var tyvärr fel. Rätt nummer var: 4 2017-07-14 sida 51 Magnus Wärja Nästlade satser import java.util.Scanner; public class IfSats3{ public static void main(String[] args){ Scanner scan = new Scanner(System.in); int resultat; System.out.print("Ange betyg: "); resultat = scan.nextInt(); if (resultat > 0 && resultat < 10){ if (resultat > 4 && resultat <= 7){ System.out.println("Resultat = G"); } else if (resultat > 7){ System.out.println("Resultat = VG"); } else{ System.out.println("Resultat = U"); Ange betyg: 10 } Du har angivit ett felaktigt värde! } else{ System.out.println("Du har angivit ett felaktigt värde!"); }}} 2017-07-14 sida 52 Magnus Wärja Iteration (while- sats) While-satsen har följande syntax: while ( villkor ) sats; villkor sant falskt sats Satsen upprepas tills dess att villkoret ger värdet falskt. 2017-07-14 sida 53 Magnus Wärja Iteration (while- sats) import java.util.Scanner; public class Räknare{ public static void main(String[] args){ Scanner scan = new Scanner(System.in); int summa = 0; int antal; int index = 1; System.out.print("Skriv in ett heltal: "); antal = scan.nextInt(); while (index <= antal){ summa += index; //summa = summa + index index ++; // index = index + 1; } System.out.println("1+2+3+..." + antal + "=" + summa ); } } Skriv in ett heltal: 9 1+2+3+...9=45 2017-07-14 sida 54 Magnus Wärja Iteration (for- sats) En for-sats är detsamma som följande while-sats: initialisering; while ( villkor ) { sats; uppräkning; } initialisering villkor sant falskt sats uppräkning 2017-07-14 sida 55 Magnus Wärja Iteration (for- sats) for (int index = 1; index <= antal; index ++) sats; Initialisering 2017-07-14 Villkor sida 56 Uppräkning Magnus Wärja Iteration (for- sats) import java.util.Scanner; public class Räknare3{ public static void main(String[] args){ Scanner scan = new Scanner(System.in); int summa = 0; int antal; System.out.print("Skriv in ett heltal: "); antal = scan.nextInt(); for (int index = 1; index <= antal; index ++){ summa = summa + index; // index = index + 1; } System.out.println("1+2+3+..." + antal + "=" + summa ); } } Skriv in ett heltal: 9 1+2+3+...9=45 2017-07-14 sida 57 Magnus Wärja Nästlade satser import java.util.Random; import java.util.Scanner; public class Tjugoett{ public static void main(String[] args){ Random slumptal = new Random(); Scanner scan = new Scanner(System.in); int summa = 0; int resultat; boolean spela = true; while(spela){ summa += slumptal.nextInt(6) + 1; System.out.println("Summa: " + summa); if (summa < 22){ System.out.println("Kasta (Ja=0, Nej=1): "); resultat = scan.nextInt(); if (resultat != 0){ spela = false; } } else{ spela = false; } } System.out.println("Resultat: " + summa); }} 2017-07-14 sida 58 Magnus Wärja 2017-07-14 sida 59 Magnus Wärja Arrayer En array är en ordnad lista med element Varje element har ett index Hela arrayen har ett namn 0 poäng 1 2 3 79 87 94 82 4 5 6 67 98 87 7 8 9 81 74 91 En array av storlek N indexeras från noll till N-1 Denna array håller 10 värden som indexeras från 0 till 9 2017-07-14 sida 60 Magnus Wärja Array • Ett visst värde i en array kommer man åt med arrayens namn följt av index inom hakparanteser Till exempel poäng[2] ger talet 94 (det tredje talet i vår array) • Uttrycket representerar en plats att spara en enkel integer och kan användas överallt där intvariabel används 2017-07-14 sida 61 Magnus Wärja Array Ett element i en array kan tilldelas ett värde, skrivas ut, eller användas i en beräkning, osv public class MinArray{ public static void main (String[] args){ int[] poäng = new int[10]; poäng[3] = 82; poäng[2] = poäng[3] + 12; System.out.println(poäng[2]); System.out.println(poäng[2] / 2); } } 94 47 2017-07-14 sida 62 Magnus Wärja Deklarera en array Några deklarationer av arrayer: int[] resultat = new int[10]; float[] pris = new float[500]; boolean[] flagga = new boolean[20]; char[] koder = new char[1750]; 2017-07-14 sida 63 Magnus Wärja Arrayens gränser minArray[100] har index 0 till 99 Anger man ett annat index så får man ArrayIndexOutOfBoundsException System.out.println(minArray[100]); // Detta ger ett fel Det är vanligt att man av misstag räknar för långt i loopar problem for (int index = 0; index <= 100; index ++) minArray [index] = index * 50; 2017-07-14 sida 64 Magnus Wärja Användning av Array import java.util.Scanner; public class Array{ public static void main(String[] args){ Scanner scan = new Scanner(System.in); int tal = 0; int summa = 0; int[] list = new int[5]; System.out.println("Ange fem tal: "); for (int i = 0; i < 5; i ++){ System.out.print("Ange tal " + (i + 1) + ":"); tal = scan.nextInt(); list[i] = tal; } for (int i = 0; i < 5; i ++){ summa += list[i]; } System.out.println("Summan av talen är: " + summa); } } 2017-07-14 sida 65 Ange fem tal: Ange tal 1:5 Ange tal 2:6 Ange tal 3:4 Ange tal 4:8 Ange tal 5:2 Summan av talen är: 25 Magnus Wärja