Lektion 2
Inläsning
Olika datatyper Selektion
Repetition
Ex. Skriv ett program som skapar (definierar och skapar) två heltalsvariabler, och som
därefter skriver ut produkten av dem. Utskriften kan t ex se ut så här:
Inläsning
I JavaJavisst+ används klassen Scanner till att läsa in data från
tangentbordet. (Måste importera klasspaket från Javas klassbibliotek där klassen Scanner finns (import java.util.*;)
Skriv följande i början av programmet (main-metoden):
Scanner sc = new Scanner(System.in);
Innebär att ett Scanner-objekt, sc, skapas som kommer att kunna läsa in data till programmet som skrivits från tangentbordet.
För att läsa in ett heltal till en heltalsvariabel:
Exempel
import java.util.*;
public class Summera2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("Skriv in ett heltal: ");
int x = sc.nextInt();
System.out.println("Skriv in ett heltal till: ");
int y = sc.nextInt();
int s = x + y;
System.out.println("Summan av talen är "+s); }
Ändra variabelvärde
int a = 4; a = a + 4;
Tar det ”gamla” värdet och ökar detta med 4
int b = a+2; b = b*b; a 4 8 b 10010
Datatypen
double
Om man vill lagra decimaltal (flyttal): double d = 12;
Måste hålla reda på vilken datatyp som man använder – det blir kompileringsfel om man försöker lägga in ett decimaltal i en int.
d 12.0
Decimalpunkt! OBS! Ej komma!
int vs double
Skillnad:
double (kan lagra väldigt stora och väldigt små tal):
OBS! Med femton decimalers noggrannhet
int
-2 147 483 648 till 2 147 483 647
int vs double
Division, double gör en ”vanlig” division, int gör en heltalsdivision
int a = 5; int b = 3;
int c = a / b;
Resten fås genom att använda % (kallas modulus)
c = a % b;
a 5
b 3
Andra datatyper
Vill man lagra ett tecken t ex 4, h, J, * etc använder man datatypen char
char c = ’f’;
Varje tecken lagras i form av ett heltal enligt en kod som kallas Unicode.
Andra datatyper
boolean: enklaste datatypen, kan bara vara
två värden, true eller false
boolean happy = true;
Används i s.k. villkorssatser som vi kommer att gå igenom inom kort.
Klassen
String
String name = ”Kenne”;Definierar en sträng, name, och ger den ”värdet” Kenne. char l = name.charAt(0);
Returnerar tecknet på position 0. int längd = name.length(); Returnerar längden på strängen Inläsning från tangentbordet: String n = sc.next();
name 'K' 'e' 'n' 'n' 'e'
name[0] name[1] name[2] name[3] name[4]
l
’K’
längd
5
n
name[0] name[1] name[n-2] name[n-1]
Programmeringskod
import java.util.*;
public class Strangar {
public static void main(String [] arg) {
Scanner sc = new Scanner(System.in); System.out.print(”Skriv in ditt förnamn: ”);
String name = sc.next();
System.out.print(”Ditt namn börjar på “+name.charAt(0)+” och har ”+name.length()+” bokstäver”);
} }
If-else - satser
Används om någonting ska utföras en gång då någonting är uppfyllt, eller det finns flera möjliga val.
Fråga hur mycket klockan är. Är klockan mer än 22 säg till användaren att gå och lägga sig, annars säg till användaren att läsa en bok.
If-else - satser Pseudokod (tankekod) Om tiden är större än 22 ”Gå och lägg dig” Annars ”Läs en bok”
tid = ”inläst värde” Om (tid > 22)
Skriv ut ”Gå och lägg dig!” Annars
Skriv ut ”Läs en bok”
Påståendet falskt!
Programmeringskod
import java.util.*;
public class GoToBed {
public static void main(String [] arg) {
Scanner sc = new Scanner(System.in); System.out.print(”Vad är klockan? ”); int time = sc.nextInt();
if(time > 22)
System.out.println(”Gå och lägg dig!”);
else
System.out.println(”Läs en bok!”); }
If-else - satser
If-else - satser Pseudokod (tankekod) Om jag läser på betyg = MVG Annars betyg = IG
plugg = ”inläst värde” Om (plugg == sant)
betyg = MVG Annars
Programmeringsexempel
import java.util.*; public class Betyg {
public static void main(String [] arg) { Scanner sc = new Scanner(System.in); String betyg;
System.out.print(”Pluggar du? (y/n)”); char plugg = sc.next().charAt(0);
if(plugg == ’y’) betyg = ”MVG”; else betyg = ”IG”; } }
Läser in ett tecken!
OBS! två = = !!!!
Uppgifter
• Gör (om du inte har gjort det) i Kapitel 1 i JavaJavisst+:
– övning ”Alder” på sidan 12. – övning ”Alder2” på sidan 13. – övning ”Feber” på sidan 13. – övning ”Chansen” på sidan 14.
– övning ”Efternamnet” på sidan 15.
Relativa operatorer
Relations
operator Symbol Exempel Värde
lika med == 1 == 4 false
skilt från != 1 != 4 true
större än > 1 > 4 false
större än eller
lika med >= 1>=4 false
mindre än < 1 < 4 true
mindre än eller
Logiska operatorer
Logisk operator
Symbol Exempel Värde
OCH && uttryck_1 && uttryck_2 true om båda är sanna, annars false
ELLER || uttryck_1 || uttryck_2 true om minst ett är sant, annars false
ICKE ! ! uttryck false om uttrycket är
Skriv ett program som avgör hur stort portot blir för ett (inte alltför tungt) brev när man anger dess vikt. Portotabellen nedan gäller.
Vikt (gram) Porto (kr)
0 – 20 5
20 – 100 10
System.out.print(”Vikt (i hela gram): ”); int weight = sc.nextInt();
int postage;
if(weight > 0 && weight <= 20)
postage = 5;
else if(weight > 20 && weight < =100)
postage = 10; else if(weight >100) postage = 20; else System.out.println(”Felinmatning!”); if(weight > 0)
System.out.println(”Portot kostar ”+postage+” kr.”);
Vikt (gram) Porto (kr)
0 – 20 5
21 – 100 10
101 – 20
Vikt mellan 0 och till 20
Vikt mellan 20 och till 100 Vikt större än 100
Övningsuppgifter
• Gör färdigt övningarna 1 – 4 på sidan 24 i kapitel 1 i JavaJavisst+