Föreläsning 3: Typomvandling, villkor och val, samt textsträngar

Relevanta dokument
Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

Klassdeklaration. Metoddeklaration. Parameteröverföring

SMD 134 Objektorienterad programmering

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Datastrukturer. Erik Forslin. Rum 1445, plan 4 på Nada

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Strukturdiagram. Styra. Algoritmer. Val

Objektorienterad programmering Föreläsning 4

Föreläsning 3: Booleans, if, switch

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Programmering A. Johan Eliasson

TDIU01 - Programmering i C++, grundkurs

F5 Selektion och iteration. ID1004 Objektorienterad programmering Fredrik Kilander

Hej Då, Karel! Programmering. Vårt första Javaprogram. hh.se/db2004. Java. Grundtyper, variabler och arrayer

Objektorienterad Programmering (TDDC77)

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program

OOP Objekt-orienterad programmering

Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan.

(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java

Inledande programmering med C# (1DV402) 27+15=42 1 (22)

Heltalsrepresentation. Fler byggstenar. Overflow och Underflow. TvŒ-komplement. FlyttalsvŠrden. Fyra heltalstyper. Tecken-bit

Metodanrop - primitiva typer. Föreläsning 4. Metodanrop - referenstyper. Metodanrop - primitiva typer

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

Föreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt

Data, typ, selektion, iteration

Enkla datatyper minne

Övning2. Variabler. Data typer

Objektorienterad Programmering (TDDC77)

F4. programmeringsteknik och Matlab

Föreläsning 7. Nyckelord I Java. Uttryck. Uttryck, Operatorer Och Kontrollflöden

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

E02 "The Review" Föreläsning 2, HT2013 Grunderna, repetition. Johan Leitet. Kurs: 1dv403 Webbteknik I

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal??

1 Texthantering. 1.1 Typen char. Exempel, skriv ut alfabetet

TDDC77 Objektorienterad Programmering

Programmeringsteknik I

Digitalitet. Kontinuerlig. Direkt proportionerlig mot källan. Ex. sprittermometer. Elektrisk signal som representerar ljud.

OOP Objekt-orienterad programmering

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

Introduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014

725G61 - Laboration 1 Variabler och villkorssatser. Johan Falkenjack

F2 Datatyper och variabler. ID1004 Objektorienterad programmering Fredrik Kilander

TDIU01 - Programmering i C++, grundkurs

Programstruktur och terminologi. Programmet producerar följande utskrift i terminalfönstret: Ett Javaprogram består av en eller flera klasser

Föreläsning 3-4 Innehåll

Parameteröverföring. Exempel. Exempel. Metodkropp

OOP Objekt-orienterad programmering

System.out.println("Jaså du har "+ antalhusdjur+ " husdjur"); if ( antalhusdjur > 5 ) System.out.println("Oj det var många);

Föreläsning 5&6 LOGISKA VARIABLER; IMPLEMENTERA KLASSER; MER ALGORITMER

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy. Funktioner / metoder. Punktnotation. Evalueringsordning

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

Föreläsning 2. Variabler, tilldelning och kodblock{} if-satsen Logiska operatorer Andra operatorer Att programmera

1 Datorn som miniräknare. 1.1 Räkneoperationer. 1.2 Variabler

Föreläsningsmaterial (Syntax och variabler)

Tentamen ID1004 Objektorienterad programmering October 29, 2013

Föreläsning 2 sept 05 (Onsdag v 36). DD Chapter 2.

Programmering för språkteknologer I, VT2012. Rum

Föreläsningsanteckningar, Introduktion till datavetenskap HT S4 Datastrukturer. Tobias Wrigstad

Visual Basic, en snabbgenomgång

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.

Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... }

TDDC30. Kursledning Kursledare: Jonas Lindgren. Labassistent: Jonas Lindgren Labassistent: Niklas Holma Labassistent: Erik Nilsson

Outline. For. I istället för att följa det normala ordningen, man ändra den. I i Java får man inte göra hopp hur som helst

Operatorer Tilldelning Kodblock { } if satsen Logiska uttryck Att programmera

TENTAMEN OOP

Föreläsning 2 Programmeringsteknik och C DD1316. Programmering. Programspråk

OOP F1:1. Föreläsning 1. Introduktion till kursen OOP Vad är Java? Ett första Java-program Variabler Tilldelning. Marie Olsson

OOP Objekt-orienterad programmering

Föreläsning 10 Datalogi 1 DA2001. Utskrift på skärmen. Syntax. print( Hej ) Hur är det? Hej. print( Hej,end= ) print( Hur är det? ) HejHur är det?

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk

Programmeringsteknik och Matlab. Dagens program. Viktiga datum. Repetitionsexempel. Repetition av if/else, for, while och Scanner

Tentamen OOP

Variabler och konstanter

Att deklarera och att använda variabler. Föreläsning 10. Synlighetsregler (2) Synlighetsregler (1)

Översikt över Visual Basic

Undervisning. Examination

JavaScript. Innehåll. Historia. Document object model DHTML. Varför Javascript?

Föreläsning 11. Arrayer. Arrayer. Arrayer. Lagrar flera värden av samma typ Kan vara primitiva typer eller objekt. Kan ha en array av t.

Klasser i Java kan ha metoder och egenskaper. Metoder beskriver funktioner som klassen kan utföra. Egenskaper beskriver innehållet i klassen.

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Om att lära sig programmera. Föreläsning 1-2 Innehåll.

C++ - En introduktion

Beräkningsvetenskap föreläsning 2

Skriftlig tentamen för kursen DV017A. Inledande programmering i Java A

Föreläsning 2. Täcker material från lektion 1, 2, 3 och 4:

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy cards. Slingor

Föreläsning 1-2: Kursinformation och introduktion till Java och programmering

Datalogi I, grundkurs med Java 10p, 2D4112, Fiktiv tentamen, svar och lösningar och extra kommentarer till vissa uppgifter 1a) Dividera förs

Lite logik. Kap 6: Sid 2

Översikt MERA JAVA OCH ECLIPSE. Uttryck och tilldelning. Uttryck och tilldelning. Uttryck och tilldelning. Uttryck och tilldelning

Programmeringsteknik med C och Matlab

Lektion Java Grunder. Javas historia. Programmeringsspråket Java. Skillnaderna mellan Java och C++ JVM (Javas Virtuella Maskin)

Lektion 1 Introduktion till DrJava och Java

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

JAVAUTVECKLING LEKTION 3

Innehållsförteckning

Föreläsning 2 - Intro till Java

Introduktion till formella metoder Programmeringsmetodik 1. Inledning

Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6

Transkript:

Föreläsning 3: Typomvandling, villkor och val, samt textsträngar Camilla Kirkegaard camilla.kirkegaard@liu.se Linköpings universitet Sweden October 14, 2013 1

Innehåll n n n n n Repetition Typomvandlingar Booleska operation och jämförelser Villkor och val Strängar och Java-klassen String October 14, 2013 2

Repetition Variabler och operationer October 14, 2013 3

Variabler n Vad är en variabel? q q Ett namn på en lagringsplats för ett värde vi "bokar upp" en plats i datorns minne för att lagra värden på Jfr. "x" i matematiken kan stå för vilket tal som helst X namn n En variabel har alltid en typ vilken sorts sak kan vi stoppa i lådan? q q Typer är t ex heltal, flyttal och tecken Vi måste bestämma oss vad vi vill lagra när vi skapar variabeln October 14, 2013 4

Datatyper n Översikt över grundläggande datatyper i Java: http://docs.oracle.com/javase/tutorial/java/nutsandbolts/ datatypes.html q q q q byte short int long q q float q boolean char q October 14, 2013 5

Unicode October 14, 2013 6

Skilj på tecken och siffra class TeckenSiffra char tecken1 = '0'; char tecken2 = 0; int tal = 0; System.out.print(tecken1 + " " + tecken2 + " " + tal); //Skriver ut: 0 0 n Tecknet 0 (Unicode 48), heltalet 0, nolltecknet ("null" används för att markera en tom variabel Unicode 0) October 14, 2013 7

Operationer - Heltal n De fyra räknesätten: + - * / n Resten vid heltalsdivision: % n Tecken: + - n n n Prioritet: (PEMDAS) q unära + - q * / % q + - Inom en grupp utförs operationerna i den ordning de står Använd parenteser för att få en viss bestämd ordning October 14, 2013 8

Typomvandlingar October 14, 2013 9

Datatyper och lagring n n Det går bara att lagra ett sorts värde i varje variabel Värden som vi försöker lagra måste uppfylla villkoren för den typen q q Storlek Format n Vi tilldelning kan vi använda ett värde som finns lagrat i en variabel och "kopiera det" till en annan variabel q int tal1 = 2; int tal2; tal2 = tal1; //hämta värdet som finns lagrat " " "i variabeln tal1 och lagra " " "samma värde i tal2" Men vad händer om tal1 och tal2 inte har samma typ?? q October 14, 2013 10

Heltal - Från mindre till större och från större till mindre n n Vi har fyra heltalstyper: byte, short, int och long q q Ett värde som finns lagrat i en byte kan alltid kopieras till en short, int eller long - hela talområdet "får plats" Men en int kan inte koperas till en short eller byte - även om själva talet skulle få plats! int tal1 = 2; byte tal2 = tal1; -> kompileringsfel! För att gå från en större typ till en mindre typ måste vi uttryckligen begära en omvandling - type cast q int tal1 = 2; byte tal2 = (byte) tal1; " q Type cast - vi anger vilken typ vi vill "tvinga" värdet från den andra variabeln att anta genom att ange typen inom parentes October 14, 2013 11

Heltal till flyttal och tvärt om n n n n Lika som för heltal kan en tilldelas en float (från mindre till större typ går bra), men tvärt om måste vi begära en omvandling (type cast) Flyttalstyperna (float och ) kan lagra större värden än heltalstyperna q Heltal kan tilldelas till en flyttalsvariabel int tal1 = 1234567890; float tal2 = tal1; " q Men vi kan få avrundningsfel! tal2 ovan lagras som 1.2345679E9 Tvärt om går inte - vi kan inte direkt tilldela en heltalsvariabel ett flyttalsvärde För att lagra heltalsdelen av ett flyttal måste vi uttryckligen begära en omvandling - type cast q tal1 = 2.22; int tal2 = (int) tal1; Här lagras bara heltalsdelen - tal2 får värdet 2 October 14, 2013 12

Tecken och heltal n Vi har sett att tecken lagras som ett heltal - dvs som dess Unicode-kod q Talområdet för en char är därför 0 till 65535 q char är mindre än int och long! q n en int eller long kan alltså alltid tilldelas värdet av en char short och byte överlappar, men är inte större/mindre n för att omvandla mellan char och byte/short krävs att man framtvingar en omvandling - type cast char c1 = 'A'; byte b = (byte) c1; b får värdet 65 (Unicode-värdet som representerar A) n Boolean kan aldrig omvandlas till en annan datatyp October 14, 2013 13

Exempel i Eclipse... October 14, 2013 14

Booleska operationer October 14, 2013 15

Jämförelser == lika med?!= inte lika med? > större än? >= större än eller lika med? < mindre än? <= mindre än eller lika med? Resultatet av en jämförelse blir alltid ett booleskt värde - dvs true eller false" October 14, 2013 16

Exempel class Jamfora int tal1 = 2; int tal2 = 3; boolean b1 = tal1 >= tal2; boolean b2 = tal1 == tal2; October 14, 2013 17 System.out.println(b1); //sant eller falskt? System.out.println(b2); //sant eller falskt?

Logiska operationer && och eller! komplement ("icke") n! har samma prioritet som andra unära operatorer n && har högre prioritet än n Jämförelseoperatorer har lägre prioritet än aritmetiska operatorer, och logiska operatorer har lägst prioritet q boolean b = 1 + 2 <= 2 + 2 3 >= 2 samma som: boolean b = ((1 + 2) <= (2 + 2)) (3 >= 2) n För att vara på den säkra sidan (och mer lättläst): använd parenteser! October 14, 2013 18

Exempel class JamforaIgen int tal1 = 2; int tal2 = 3; boolean b1 = tal1 >= tal2 && tal1 == tal2; boolean b2 = tal1 == tal1 tal1 >= tal2; System.out.println(b1); //sant eller falskt? System.out.println(b2); //sant eller falskt? October 14, 2013 19

Villkor och val October 14, 2013 20

Algoritmer med förgreningar ta ut pengar Hämta kontonummer och uttagsbelopp Hämta saldo för kontot Neka uttag! nej! Är saldot större än uttagsbelopp? ja! Minska saldo med uttagsbelopp, betala ut pengar October 14, 2013 21

Om - annars (if - else) n Om... gör... annars... gör... q Om saldot är större än uttagsbeloppet, godkänn uttaget, annars skriv ut ett meddelande att uttaget inte är godkänt n if (villkor) gör; else gör; class Om saldo = 200.0; uttag = 300.0; if (uttag <= saldo) System.out.println("Uttag ok"); else System.out.println("Uttag är större än saldot"); October 14, 2013 22

Om - annars (if - else) n Samma sak: class Om2 saldo = 200.0; uttag = 300.0; if (uttag <= saldo) System.out.println("Uttag ok"); if (uttag > saldo) System.out.println("Uttag är större än saldot"); October 14, 2013 23

Om - annars (if - else) class Om3 saldo = 200.0; uttag = 100.0; if (uttag <= saldo) System.out.println("Uttag ok"); saldo = saldo - uttag; System.out.println("Nytt saldo är: " + saldo); else System.out.println("Uttag är inte ok"); System.out.println("Inga pengar dragna från kontot"); October 14, 2013 24

Om - annars (if - else) - Vi stegar! class Om3 saldo saldo = 200.0; uttag = 100.0; if (uttag <= saldo) System.out.println("Uttag ok"); saldo = saldo - uttag; System.out.println("Nytt saldo är: " + saldo); else System.out.println("Uttag är inte ok"); System.out.println("Inga pengar dragna från kontot"); October 14, 2013 25

Om - annars (if - else) - Vi stegar! class Om3 saldo saldo = 200.0; uttag = 100.0; if (uttag <= saldo) System.out.println("Uttag ok"); saldo = saldo - uttag; System.out.println("Nytt saldo är: " + saldo); else System.out.println("Uttag är inte ok"); System.out.println("Inga pengar dragna från kontot"); uttag October 14, 2013 26

Om - annars (if - else) - Vi stegar! class Om3 saldo saldo = 200.0; uttag = 100.0; if (uttag <= saldo) System.out.println("Uttag ok"); saldo = saldo - uttag; System.out.println("Nytt saldo är: " + saldo); else System.out.println("Uttag är inte ok"); System.out.println("Inga pengar dragna från kontot"); uttag October 14, 2013 27

Om - annars (if - else) - Vi stegar! class Om3 saldo saldo = 200.0; uttag = 100.0; if (100.0 <= 200.0) System.out.println("Uttag ok"); saldo = saldo - uttag; System.out.println("Nytt saldo är: " + saldo); else System.out.println("Uttag är inte ok"); System.out.println("Inga pengar dragna från kontot"); uttag October 14, 2013 28

Om - annars (if - else) - Vi stegar! class Om3 saldo saldo = 200.0; uttag = 100.0; if (true) System.out.println("Uttag ok"); saldo = saldo - uttag; System.out.println("Nytt saldo är: " + saldo); else System.out.println("Uttag är inte ok"); System.out.println("Inga pengar dragna från kontot"); uttag October 14, 2013 29

Om - annars (if - else) - Vi stegar! class Om3 saldo saldo = 200.0; uttag = 100.0; if (uttag <= saldo) System.out.println("Uttag ok"); saldo = saldo - uttag; System.out.println("Nytt saldo är: " + saldo); else System.out.println("Uttag är inte ok"); System.out.println("Inga pengar dragna från kontot"); uttag evabl45> Uttag ok October 14, 2013 30

Om - annars (if - else) - Vi stegar! class Om3 saldo saldo = 200.0; uttag = 100.0; if (uttag <= saldo) System.out.println("Uttag ok"); saldo = saldo - uttag; System.out.println("Nytt saldo är: " + saldo); else System.out.println("Uttag är inte ok"); System.out.println("Inga pengar dragna från kontot"); uttag evabl45> Uttag ok October 14, 2013 31

Om - annars (if - else) - Vi stegar! class Om3 saldo saldo = 200.0; uttag = 100.0; if (uttag <= saldo) System.out.println("Uttag ok"); saldo = 200.0-100.0; System.out.println("Nytt saldo är: " + saldo); else System.out.println("Uttag är inte ok"); System.out.println("Inga pengar dragna från kontot"); uttag evabl45> Uttag ok October 14, 2013 32

Om - annars (if - else) - Vi stegar! class Om3 saldo saldo = 200.0; uttag = 100.0; if (uttag <= saldo) System.out.println("Uttag ok"); saldo = 100.0; System.out.println("Nytt saldo är: " + saldo); else System.out.println("Uttag är inte ok"); System.out.println("Inga pengar dragna från kontot"); uttag evabl45> Uttag ok October 14, 2013 33

Om - annars (if - else) - Vi stegar! class Om3 saldo saldo = 200.0; uttag = 100.0; if (uttag <= saldo) System.out.println("Uttag ok"); saldo = saldo - uttag; System.out.println("Nytt saldo är: " + saldo); else System.out.println("Uttag är inte ok"); System.out.println("Inga pengar dragna från kontot"); uttag October 14, 2013 34 evabl45> Uttag ok evabl45> Nytt saldo är: 100.0

Om - annars (if - else) - Vi stegar! class Om3 saldo saldo = 200.0; uttag = 100.0; if (uttag <= saldo) System.out.println("Uttag ok"); saldo = saldo - uttag; System.out.println("Nytt saldo är: " + saldo); else System.out.println("Uttag är inte ok"); System.out.println("Inga pengar dragna från kontot"); uttag October 14, 2013 35 evabl45> Uttag ok evabl45> Nytt saldo är: 100.0

Om - annars för kontroll av värden class Uttag2 saldo = 200.0; System.out.println("Ange uttagsbelopp: "); uttag =... //låt användaren ange värde if (uttag >= 0) saldo = saldo - uttag; System.out.println("Nytt saldo är: " + saldo); else System.out.println("Belopp får inte vara negativt!"); October 14, 2013 36

Om - annars - om... class Uttag3 saldo = 200.0; uttag = 300.0; if (uttag >= 0 && uttag <= saldo) saldo = saldo - uttag; System.out.println("Nytt saldo är: " + saldo); else if (uttag >= 0 && uttag > saldo) System.out.println("Du har inte råd!"); else System.out.println("Belopp får inte vara negativt!"); 37

Om - annars - om... Vi stegar! saldo class Uttag3 saldo = 200.0; uttag = 300.0; if (uttag >= 0 && uttag <= saldo) saldo = saldo - uttag; System.out.println("Nytt saldo är: " + saldo); else if (uttag >= 0 && uttag > saldo) System.out.println("Du har inte råd!"); else System.out.println("Belopp får inte vara negativt!"); 38

Om - annars - om... Vi stegar! saldo class Uttag3 saldo = 200.0; uttag = 300.0; uttag if (uttag >= 0 && uttag <= saldo) saldo = saldo - uttag; System.out.println("Nytt saldo är: " + saldo); else if (uttag >= 0 && uttag > saldo) System.out.println("Du har inte råd!"); else System.out.println("Belopp får inte vara negativt!"); 39

Om - annars - om... Vi stegar! saldo class Uttag3 saldo = 200.0; uttag = 300.0; uttag if (uttag >= 0 && uttag <= saldo) saldo = saldo - uttag; System.out.println("Nytt saldo är: " + saldo); else if (uttag >= 0 && uttag > saldo) System.out.println("Du har inte råd!"); else System.out.println("Belopp får inte vara negativt!"); 40

Om - annars - om... Vi stegar! saldo class Uttag3 saldo = 200.0; uttag = 300.0; uttag if (true && uttag <= saldo) saldo = saldo - uttag; System.out.println("Nytt saldo är: " + saldo); else if (uttag >= 0 && uttag > saldo) System.out.println("Du har inte råd!"); else System.out.println("Belopp får inte vara negativt!"); 41

Om - annars - om... Vi stegar! saldo class Uttag3 saldo = 200.0; uttag = 300.0; uttag if (true && false) saldo = saldo - uttag; System.out.println("Nytt saldo är: " + saldo); else if (uttag >= 0 && uttag > saldo) System.out.println("Du har inte råd!"); else System.out.println("Belopp får inte vara negativt!"); 42

Om - annars - om... Vi stegar! saldo class Uttag3 saldo = 200.0; uttag = 300.0; uttag if (false) saldo = saldo - uttag; System.out.println("Nytt saldo är: " + saldo); else if (uttag >= 0 && uttag > saldo) System.out.println("Du har inte råd!"); else System.out.println("Belopp får inte vara negativt!"); 43

Om - annars - om... Vi stegar! saldo class Uttag3 saldo = 200.0; uttag = 300.0; uttag if (uttag >= 0 && uttag <= saldo) saldo = saldo - uttag; System.out.println("Nytt saldo är: " + saldo); else if (uttag >= 0 && uttag > saldo) System.out.println("Du har inte råd!"); else System.out.println("Belopp får inte vara negativt!"); 44

Om - annars - om... Vi stegar! saldo class Uttag3 saldo = 200.0; uttag = 300.0; uttag if (uttag >= 0 && uttag <= saldo) saldo = saldo - uttag; System.out.println("Nytt saldo är: " + saldo); else if (sant && uttag > saldo) System.out.println("Du har inte råd!"); else System.out.println("Belopp får inte vara negativt!"); 45

Om - annars - om... Vi stegar! saldo class Uttag3 saldo = 200.0; uttag = 300.0; uttag if (uttag >= 0 && uttag <= saldo) saldo = saldo - uttag; System.out.println("Nytt saldo är: " + saldo); else if (sant && sant) System.out.println("Du har inte råd!"); else System.out.println("Belopp får inte vara negativt!"); 46

Om - annars - om... Vi stegar! saldo class Uttag3 saldo = 200.0; uttag = 300.0; uttag if (uttag >= 0 && uttag <= saldo) saldo = saldo - uttag; System.out.println("Nytt saldo är: " + saldo); else if (sant) System.out.println("Du har inte råd!"); else System.out.println("Belopp får inte vara negativt!"); 47

Om - annars - om... Vi stegar! saldo class Uttag3 saldo = 200.0; uttag = 300.0; uttag if (uttag >= 0 && uttag <= saldo) saldo = saldo - uttag; System.out.println("Nytt saldo är: " + saldo); else if (uttag >= 0 && uttag > saldo) System.out.println("Du har inte råd!"); else System.out.println("Belopp får inte vara negativt!"); evabl45> Du har inte råd! 48

Om - annars - om... Vi stegar! saldo class Uttag3 saldo = 200.0; uttag = 300.0; uttag if (uttag >= 0 && uttag <= saldo) saldo = saldo - uttag; System.out.println("Nytt saldo är: " + saldo); else if (uttag >= 0 && uttag > saldo) System.out.println("Du har inte råd!"); else System.out.println("Belopp får inte vara negativt!"); evabl45> Du har inte råd! 49

Om - annars - om... Vad händer nu? class Uttag3 saldo = 200.0; uttag = -30.0; if (uttag >= 0 && uttag <= saldo) saldo = saldo - uttag; System.out.println("Nytt saldo är: " + saldo); else if (uttag >= 0 && uttag > saldo) System.out.println("Du har inte råd!"); else System.out.println("Belopp får inte vara negativt!"); 50

Val mellan alternativ class AlternativOm int siffra = 3; if (siffra == 1) System.out.println("Det är en 1:a"); else if (siffra == 2) System.out.println("Det är en 2:a"); else if (siffra == 3) System.out.println("Det är en 3:a"); else System.out.println("Det är inte 1, 2 eller 3"); October 14, 2013 51

Val mellan alternativ class AlternativOm int siffra = 7; if (siffra == 1) System.out.println("Det är en 1:a"); else if (siffra == 2) System.out.println("Det är en 2:a"); else if (siffra == 3) System.out.println("Det är en 3:a"); else System.out.println("Det är inte 1, 2 eller 3"); October 14, 2013 52

Val mellan alternativ - switch class AlternativSwitch int siffra = 3; switch (siffra) case 1: System.out.println("Det är en 1:a"); break; case 2: System.out.println("Det är en 2:a"); break; case 3: System.out.println("Det är en 3:a"); break; default: System.out.println("Det är inte 1, 2 eller 3"); break; October 14, 2013 53

Textsträngar och Javas standardbibliotek October 14, 2013 54

Textsträngar (String) ingen grundläggande datatyp n n n n n String är inte en primitiv datatyp utan en klass i Javas standardbibliotek q q Många klasser i standardbiblioteket är "kombinationer" av grundläggande datayper String kan ses som en sekvens av char Vi kan skapa objekt (instanser) av klassen String Vi kan skriva int i = 1; och String s = "hej"; men även String s = new String("hej");" q Skillnaden kommer vi tillbaka till senare i kursen! q Tecken skrivs inom ' ' medan strängar (text) skrivs inom " " q Vi kan sätta samman flera teckensträngar med + Klassen String har metoder som vi kan komma åt genom att skriva en. och sedan metodens namn q s = s.touppercase(); q om metoden kräver indata skrivs det i parentesen För att få reda på vilka metoder som finns för klassen String kolla i Javadoc för Java API q http://docs.oracle.com/javase/6/docs/api/java/lang/string.html October 14, 2013 55

Exempel class Text String mintext = "Hej!"; String annantext = "Hejsan!"; System.out.println(mintext); System.out.println(mintext + " " + annantext); October 14, 2013 56

Exempel "Hej!" class Text String mintext = "Hej!"; String annantext = "Hejsan!"; mintext String System.out.println(mintext); System.out.println(mintext + " " + annantext); October 14, 2013 57

Exempel "Hejsan!" "Hej!" class Text annantext String String mintext = "Hej!"; String annantext = "Hejsan!"; mintext String System.out.println(mintext); System.out.println(mintext + " " + annantext); October 14, 2013 58

Exempel "Hejsan!" "Hej!" class Text annantext String String mintext = "Hej!"; String annantext = "Hejsan!"; mintext String System.out.println(mintext); System.out.println(mintext + " " + annantext); evabl45> Hej! October 14, 2013 59

Exempel "Hejsan!" "Hej!" class Text annantext String String mintext = "Hej!"; String annantext = "Hejsan!"; mintext String System.out.println(mintext); System.out.println(mintext + " " + annantext); evabl45> Hej! evabl45> Hej! Hejsan! October 14, 2013 60

Javadoc för Javas standardbibliotek n n n n Viktigt verktyg få personer kan hela språket utantill! q Använd som "uppslagsbok" så fort ni får känslan "det här måste väl någon ha gjort en smart metod för" eller när ni står inför frågan "vilken klass/metod är bäst att använda i det här läget?" Paket grupp av klasser q q Klasserna har ett namn + ett paket = fullständigt namn Exempel: String och java.lang.string Några användbara paket q q java.lang Grundläggande klasser och "wrappers" för grundläggande datatyper java.util Bland annat listor, mängder, tid mm. OBS! Lista på vilka klasser ni kan komma att behöva finns på kurshemsidan October 14, 2013 61

Javadoc för klassen String October 14, 2013 62

Vi läser Javadoc för Stringklassen... October 14, 2013 63

Tips för att läsa Javadoc 64

Exempel class Textoperationer String s1 = "text"; String s2 = " MER text"; s1 = s1.touppercase(); s2 = s1.concat(s2); System.out.println(s1); System.out.println(s2); Ø Ø TEXT TEXT MER text October 14, 2013 65

Hänvisningsoperatorn:. n s1 = s1.touppercase(); q q Läses ungefär "på värdet som finns i variabeln s1 just nu, anropa metoden touppercase(), lagra sedan det nya värdet som touppercase() returnerar i variabeln s1 igen" Det som kommer före. anger vad metoden ska anropas på, dvs vad metoden "hänvisar till" n Låt oss stega igenom programmet... October 14, 2013 66

Exempel "text" class Textoperationer String s1 = "text"; String s2 = " MER text"; s1 = s1.touppercase(); s2 = s1.concat(s2); System.out.println(s1); System.out.println(s2); October 14, 2013 67 s1 String

Exempel "text" "MER text" class Textoperationer String s1 = "text"; s1 String String s2 = " MER text"; s1 = s1.touppercase(); s2 = s1.concat(s2); System.out.println(s1); System.out.println(s2); s2 String October 14, 2013 68

Exempel "text" "MER text" class Textoperationer String s1 = "text"; s1 String String s2 = " MER text"; s1 = s1.touppercase(); s2 = s1.concat(s2); System.out.println(s1); System.out.println(s2); s2 String "anropa metoden touppercase() på värdet som finns i variabeln s1, lagra sedan resultatet i s1" October 14, 2013 69

touppercase()? October 14, 2013 70

Exempel "text" "MER text" class Textoperationer String s1 = "text"; s1 String String s2 = " MER text"; s1 = "text".touppercase(); s2 = s1.concat(s2); System.out.println(s1); System.out.println(s2); s2 String October 14, 2013 71

Exempel "text" "MER text" class Textoperationer String s1 = "text"; String s2 = " MER text"; s1 = "TEXT"; s2 = s1.concat(s2); s1 String System.out.println(s1); System.out.println(s2); s2 String October 14, 2013 72

Exempel "TEXT" "MER text" class Textoperationer String s1 = "text"; String s2 = " MER text"; s1 = "TEXT"; s2 = s1.concat(s2); s1 String System.out.println(s1); System.out.println(s2); s2 String October 14, 2013 73

Exempel "TEXT" "MER text" class Textoperationer String s1 = "text"; s1 String String s2 = " MER text"; s1 = s1.touppercase(); s2 = s1.concat(s2); System.out.println(s1); System.out.println(s2); s2 String October 14, 2013 74

concat()? October 14, 2013 75

Exempel "TEXT" "MER text" class Textoperationer String s1 = "text"; s1 String String s2 = " MER text"; s1 = s1.touppercase(); s2 = s1.concat(s2); System.out.println(s1); System.out.println(s2); s2 String "lägg till värdet av variabeln s2 i slutet på (=konkatenera) värdet i variabeln s1" October 14, 2013 76

Exempel "TEXT" "MER text" class Textoperationer String s1 = "text"; String s2 = " MER text"; s1 = s1.touppercase(); s2 = "TEXT".concat(" MER text"); System.out.println(s1); System.out.println(s2); October 14, 2013 77 s1 String s2 String

Exempel "TEXT" "MER text" class Textoperationer String s1 = "text"; s1 String String s2 = " MER text"; s1 = s1.touppercase(); s2 = "TEXT MER text"; System.out.println(s1); System.out.println(s2); s2 String October 14, 2013 78

Exempel "TEXT" "TEXT MER text" class Textoperationer String s1 = "text"; s1 String String s2 = " MER text"; s1 = s1.touppercase(); s2 = "TEXT MER text"; System.out.println(s1); System.out.println(s2); s2 String October 14, 2013 79

Exempel "TEXT" "TEXT MER text" class Textoperationer String s1 = "text"; s1 String String s2 = " MER text"; s1 = s1.touppercase(); s2 = s1.concat(s2); System.out.println(s1); System.out.println(s2); evabl45> TEXT s2 String October 14, 2013 80

Exempel "TEXT" "TEXT MER text" class Textoperationer String s1 = "text"; String s2 = " MER text"; s1 = s1.touppercase(); s2 = s1.concat(s2); System.out.println(s1); System.out.println(s2); October 14, 2013 81 s1 String evabl45> TEXT evabl45> TEXT MER text s2 String

Vi testar att stega i Eclipse... October 14, 2013 82

Sammanfattning n n n n Typomvandlingar q Samma typ men olika storlek? - vi kan alltid gå från mindre till större typ, men från större till mindre krävs type cast q type cast - anges genom att ange typen inom parentes vid tilldelning q type cast behövs även när vi omvandlar från flyttal till heltal (dvs "kastar bort decimalerna") samt från char till short eller byte Villkor q Jämförelseoperatorer: q Logiska operatorer:! (icke) - && (och) - (eller) q Ger ett booleskt värde som resultat Val q if (villkor) //gör något; else //gör något annat; q switch - väljer mellan alternativa heltalsvärden Textsträngar - inte en grundläggande datatyp! q String är en klass i Javas standardbibliotek q Slå upp Javadoc för Java API för att läsa om metoderna! October 14, 2013 83

Nästa gång? n Arrayer och loopar October 14, 2013 84

October 14, 2013 85