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