Kommentarer Kommentarer påverkar inte programmet. Hello World! /* 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. } Beskriv att kod mellan /* och */ hoppas över av datorn Beskriv att allt efter två snedstreck // ignoreraras och datorn fortsätter på nästa rad. Hello World! 2017-10-13 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!"); } Metoden println ställer sig på en ny rad efter att en textsträng skrivits ut. System.out.println("Hello World!"); Hello World!Hello World!Hello World! Hello World! 2017-10-13 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-10-13 Magnus Wärja
Undantagstecken Kompelatorn vet ej hur ovanstående uttryck skall tolkas! System.out.println("Jag ropade "BINGO" hörde du inte det?"); System.out.println("Jag ropade \"BINGO\" hörde du inte det?"); Compile-time error Korrekt 2017-10-13 Magnus Wärja
Undantagstecken Undantagstecken \b \t \n \r \" \' \\ Betydelse Backsteg Tabb Ny rad Vagnsretur Dubbelt citattecken Enkelt citattecken Bakvänt snedsträck 2017-10-13 Magnus Wärja
Undantagstecken Roses are red, Violets are blue, Sugar is sweet, 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-10-13 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). 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) int totalt; data typ variabelnamn 2017-10-13 Magnus Wärja
Variabeltilldelning En triangel har 3 sidor. En kvadrat har 4 sidor. 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-10-13 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){ double summa; summa = MOMS * 100; System.out.print("Summan är: " + summa); } Summan är : 125.0 2017-10-13 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-10-13 Magnus Wärja
Variabler (Numeriska variabler) De olika numeriska datatyperna kräver olika mycket plats i datorns minne. Typ byte short int long float double Utrymme 8 bits 16 bits 32 bits 64 bits Min värde -128 -32,768 -2 147 483 648 < -9 x 1018 +/- 3,4 x 1038 med 7 signifikanta siffror +/- 1,7 x 10308 med 15 signifikanta siffror Max värde 127 32,767 2 147 483 647 > 9 x 1018 2017-10-13 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-10-13 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-10-13 Magnus Wärja
Beräkningar a + b + c + d + e a + b * c - d / e 1 2 3 4 3 1 4 2 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 a + b * c - d / e 1 2 3 4 3 1 4 2 a / (b + c) - d % e 2 1 4 3 a / (b * (c + (d - e))) 4 3 2 1 2017-10-13 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-10-13 Magnus Wärja
Operatorer för att öka och minska Uttrycket: tal++; är samma som: tal = tal + 1; Uttryck tal++ ++tal tal-- --tal Operation adderar 1 subtraherar 1 Uttryckets värde gamla värdet nya värdet 2017-10-13 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++); //5 System.out.println(++b); //6 System.out.println(a); //6 System.out.println(b); //6 System.out.println(c++ + ++c); //10+12 } Sista raden i varje beräkningssats har finns där för att visa hur man gör en tom rad vid utskriften av resultatet. 5 6 22 2017-10-13 Magnus Wärja
Tilldelningsoperatorer += -= *= /= %= Exempel x += y x -= y x *= y x /= y x %= y Motsvarar 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; // summa = 150 2017-10-13 Magnus Wärja
Konvertera data Från Till 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 byte short char int long float Till short, int, long, float eller double int, long, float eller double long, float eller double float eller double double 2017-10-13 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-10-13 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-10-13 Magnus Wärja
Några av Klassen Scanners metoder Returnerar Namn double nextDouble() Läser in tecknen som en double. int nextInt () Läser in tecknen som en int. String nextLine() Läser in textsträngar 2017-10-13 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-10-13 Magnus Wärja
Klasser och objekt Klass Objektmetoder Klassmetoder 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-10-13 Magnus Wärja
Anrop till konstruktor Skapa objekt Objekt initieras (skapas, deklareras) på ett annat sätt än deklaration av primitiva datatyper. Scanner scan = new Scanner (System.in); Klassdeklaration Parameter Anrop till konstruktor Nytt objekts namn Konstruktorn finns i klassen Scanner 2017-10-13 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-10-13 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-10-13 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(); namn = namn.toUpperCase(); årTillPension = PENSION - ålder; System.out.println(namn + ", du går i pension om: " + årTillPension + " år!"); } Metodnamn (och ett metodanrop) Metodnamn (och ett metodanrop) Metodnamn (och ett metodanrop) Vad heter du? anna Hur gammal är du? 20 ANNA, du går i pension om: 45 år! 2017-10-13 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-10-13 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(); //ANNA NILSSON personTva = personTva.toLowerCase(); //hans månsson langd = personEtt.length(); //12 tecken = personTva.substring(1,2); //a personEtt = personEtt.replace('N','X'); //AXXA XILSSOX personTva = personTva.substring(0,4); //hans } Metoder kan ta emot en till flera parametrar 2017-10-13 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. indexOf(String str, int fromIndex) Returns the index within this string of the first occurrence of the specified substring, starting at the specified index. 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. substring(int beginIndex) Returns a new string that is a substring of this string. substring(int beginIndex, int endIndex) toLowerCase() Converts all of the characters in this String to lower case using the rules of the default locale. toUpperCase() Converts all of the characters in this String to upper case using the rules of the default locale. 2017-10-13 Magnus Wärja
Paket Javas inbyggda klassbibliotek är organiserade i paket. Några av paketen specificeras nedan: 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. Paket java.lang java.applet java.awt javax.swing java.net java.util javax.xml.parsers Syfte 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 2017-10-13 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-10-13 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); } Ett slumptal (integer): 1213991402 Från 0 till 6: 2 Från 1 till 6: 1 Från -10 till 9: -2 2017-10-13 Magnus Wärja
Några av klassen Randoms metoder 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). nextInt(int num) Randoms a random number in the range 0 to num-1. 2017-10-13 Magnus Wärja
Klassmetoder (statiska metoder) 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-10-13 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-10-13 Magnus Wärja
Några av klassen Math metoder 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. sin(double a) Returns the trigonometric sine of an angle. tan(double a) Returns the trigonometric tangent of an angle. exp(double a) Returns Euler's number e raised to the power of a double value. pow(double a, double b) Returns the value of the first argument raised to the power of the second argument. random() Returns a double value with a positive sign, greater than or equal to 0.0 and less than 1.0. sqrt(double a) Returns the correctly rounded positive square root of a double value. 2017-10-13 Magnus Wärja
Formatering (NumberFormat) import java.util.Scanner; import java.text.NumberFormat; 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))); } Ange kvantitet: 100 Ange pris: 25 Totalpris: 2500.0 Totalpris: 2 500,00 kr Totalpris med 25% rabatt är: 1 875,00 kr 2017-10-13 Magnus Wärja
Några av klassen NumberFormats metoder String format(double number) Specialization of format. static NumberFormat getCurrencyInstance() Returns a currency format for the current default locale. getPercentInstance() Returns a percentage format for the current default locale. 2017-10-13 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.###"); 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)); } Ange ett tal: 10 Ange ytterligare ett tal: 3 10.0/3.0 = 3.3333333333333335 Med klassen DecimalFormat 10.0/3.0 = 3,333 2017-10-13 Magnus Wärja
Några av klassen DecimalFormats metoder Konstruktor DecimalFormat(String pattern) Creates a DecimalFormat using the given pattern and the symbols for the default locale. Metoder void applyPattern(String pattern) Apply the given pattern to this Format object. String format(double number) Returns a string containing the specified number formatted according to the current pattern. 2017-10-13 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-10-13 Magnus Wärja
2017-10-13 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-10-13 Magnus Wärja
Boolska uttryck 56 == 56 Sant ’a’ == ’a’ ’a’ == ’A’ Falskt ’x’ != ’z’ 45 < 80 2 >= 6 2 >= 2 2017-10-13 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-10-13 Magnus Wärja
Selektion (if- sats) falskt sats sant villkor if ( villkor ) sats 2017-10-13 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-10-13 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"); Skriv in ditt tentaresultat (0 to 100): 85 Ditt betyg är VG 2017-10-13 Magnus Wärja
Blocksatser Block Gissa ett nummer mellan 1 och 10: 7 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-10-13 Magnus Wärja
Nästlade satser Ange betyg: 10 Du har angivit ett felaktigt värde! 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"); System.out.println("Du har angivit ett felaktigt värde!"); }}} Ange betyg: 10 Du har angivit ett felaktigt värde! 2017-10-13 Magnus Wärja
Iteration (while- sats) While-satsen har följande syntax: sats sant villkor falskt while ( villkor ) sats; Satsen upprepas tills dess att villkoret ger värdet falskt. 2017-10-13 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-10-13 Magnus Wärja
Iteration (for- sats) sats sant villkor falskt uppräkning En for-sats är detsamma som följande while-sats: sats sant villkor falskt uppräkning initialisering initialisering; while ( villkor ) { sats; uppräkning; } 2017-10-13 Magnus Wärja
Iteration (for- sats) Uppräkning Initialisering Villkor for (int index = 1; index <= antal; index ++) sats; Uppräkning Initialisering Villkor 2017-10-13 Magnus Wärja
Iteration (for- sats) Skriv in ett heltal: 9 1+2+3+...9=45 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 ); Exenpel på en for-sats för att förtydliga föregående OH. Skriv in ett heltal: 9 1+2+3+...9=45 2017-10-13 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{ System.out.println("Resultat: " + summa); }} 2017-10-13 Magnus Wärja
2017-10-13 Magnus Wärja
Arrayer En array är en ordnad lista med element poäng Hela arrayen har ett namn Varje element har ett index 0 1 2 3 4 5 6 7 8 9 79 87 94 82 67 98 87 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-10-13 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 int-variabel används 2017-10-13 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); } Värdena i en array kallas array-element En array sparar flera värden av samma typ Typen kan vara en primitiv datatyp eller objektreferenser Därför kan vi skapa array av int, char eller String I Java är en array ett objekt Därför är namnet på arrayen en objektreferens och arrayen i sig själv måste instansieras 94 47 2017-10-13 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]; Datatypen är int[] (en array av int] Notera att deklarationen inte talar om arrayens storlek Ett objekt av den typen kommer att få en viss storlek new int[10] skapar det nya objektet som är en array av int med plats för 10 int. När en array väl har skapats så har den en fast storlek 2017-10-13 Magnus Wärja
Arrayens gränser problem 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 for (int index = 0; index <= 100; index ++) minArray [index] = index * 50; problem Once an array is created, it has a fixed size An index used in an array reference must specify a valid element That is, the index value must be in bounds (0 to N-1) The Java interpreter throws an ArrayIndexOutOfBoundsException if an array index is out of bounds This is called automatic bounds checking 2017-10-13 Magnus Wärja
Användning av Array Ange fem tal: Ange tal 1:5 Ange tal 2:6 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; } summa += list[i]; System.out.println("Summan av talen är: " + summa); 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 2017-10-13 Magnus Wärja