Programmering 1
JAVA
Lars KaggSkolan
Håkan Brorson

Ingår i kursen
- Prov 1
- Inlämningsupp. - Städa upp kod
- Prov 2
- Slut Projekt GUI
1. Intro
Bläddra neråt
JDK & Kompilator
- Innan vi kan komma igång med programmeringen, måste vi först installera två program på datorn.
- Först ska vi ladda ner JDK(Java Development Kit) - Oracles.com
- JDK är själva utvecklingsmiljön som gör det möjligt för dig att utveckla applikationer och program i Java.
- Sedan behöver vi en kompilator - Eclipse.org
- En kompilator är ett program som översätter programkod till datorns interna språk.
- Datorn förstår bara ettor och nollor så kompilatorn översätter din Java-kod så att datorn förstår den.


Installera JAVA
https://www.oracle.com/technetwork/java/javase/downloads/index.html
Tryck på JDK Download

Installera JAVA
Tryck på jdk-15.0.2_osx-x64_bin.dmg
Dubbel klicka och installera JAVA

Installera Eclipse

Tryck på Download
Installera Eclipse


- Klicka "Download 64 bit"
- Klicka på "Download" och välj spara på datorn
Installera Eclipse
Dubbel klicka



Dubbel klicka
Klicka på "Öppna"
Installera Eclipse
Välj
Eclips IDE for java Developers
&
klicka installera

Installera Eclipse
Välj Lauch

Om det står något annat så välj så att det sparas i mappen för din användare
Bockar du in den här så slipper du den nästa gång du startar Eclipse
Fixa Autocomplete
Få exempel när du skriver kod.
- Välj File och Properties (cmd+,)
- Välj Java - Editor - Content Assist - Advanced
- Bocka i och ur som på bilden

2. Koda i Java
Koda Java
- Java består av klasser. Det finnas tiotusentals klasser.
- Ett minimalt program är en klass.
- För varje klass skapas en separat fil. Filens namn matchar klassens namn.
- Säg att du vill skapa en klass som beskriver ett hem.
- Du måste skapa en "Home Class" som kommer att sparas i fil - Home.java.
- Javafilerna innehåller kod:
- "Class Name" och "Class Body"
- Class body är skriven inom "måsvingar" { }
- "Class Name" och "Class Body"
Koda Java
- Javafilerna innehåller kod:
- "Class Name" och "Class Body"
- Class body är skriven inom "måsvingar"

Koda Java
- Klasskroppen kan innehålla variabler och metoder (funktioner).


Koda Java
- Ett minimalt program java måste innehålla minst en klass som i sin tur måste innehålla minst en metod/funktion för att kunna starta programmet .

- Klassen som startar programmet kan ha valfritt namn men samma namn som filen.
- Main metoden som används för att starta programmet måste alltid se lika ut
Bra kortkomandon
| Symbol | Tangent | |
|---|---|---|
| Undo | cmd+z | |
| Redo | cmd+y | |
| Copy | cmd+c | |
| Cut | cmd+x | |
| Paste | cmd+v | |
| Måsvinge | {} | shift+alt+8 eller 9 |
| Or | || | alt+7 |
Hitta symboler



3. Historik
Historia
- Äran som den första programmeraren brukar tilldelas Ada Lovelace, dotter till Lord Byron.
- Hon hjälpte Charles Babbage i dennes arbete med den analytiska maskinen som brukar betraktas som det första exemplet på en dator, trots att den aldrig blev färdigställd.
- Programspråket Ada är uppkallat efter henne

Historia
- De tidigaste datorerna hade inga skärmar, utan skrev ut output på papper istället.
- På 60- och 70-talet började datorer med skärmar dyka upp, och så även välkända programmeringsspråk som C, vilket inspirerade till C++ på 80-talet.
- Under denna här tidsperiod blir programmering mer tillgängligt för hemanvändare med språk som BASIC och hemdatorer som Commodore 64, AMIGA och MSX.
- Ytterligare ett språk som blivit väldigt stort (störst, faktiskt) är Java, som kom 1995.




Microscope and calculator, 1952
Commodore 64
Historia Java
- Java är ett objektorienterat programspråk som konstruerades av bland andra James Gosling på Sun Microsystems under 90-talets tidigare hälft.
- Ursprungligen kallades språket D, för att sedan ändras till Oak, men Sun bytte slutligen ut namnet ytterligare en gång, och Java presenterades för världen 23 maj 1995.
Anledningen till namnbytet var att Oak var upptaget.
- Programspråket är idag ett av de mest använda språken och används för allt från diskmaskiner till mobilspel.


4. Hello World
Skapa ditt första program
Det är en gammal tradition att en programmerares första program i ett nytt språk skriver ut texten “Hello World!”.
Skapa ett nytt projekt
- Starta Eclipse
- Välj "File"
- Välj "New"
- Tryck på "Java Project"

Skapa Project
- I "Project name" skriver du "helloWorld"
- Tänk på att inte använda å, ä eller ö i programmering!
- Tryck sedan "finish"
- Tryck sedan på "Don't Create"


Skapa Java Class
- Nu har vi skapat ett projekt och det är dax att skapa en Java class
- Höger klicka på "src" till vänster Eclipse
- Välj "New" och sedan "Class"


Namnge Java Class
- Skriv HelloWorld i Name
- Bocka i "public static void man"
- Avsluta med "Finish"

Börja koda
- Nu är vi redo för att börja koda.

Skriva kod
- Börja skriva på rad 4

public static void main(String[] args) {
System.out.println("Hello World");
}Köra programmet
- Tryck på "Playknappen"


- Skriver ut “Hello World” i terminalen!
5. Kommentarer
Kommentar i Java
- När du skapar ett nytt projekt i NetBeans kommer du märka att viss text är grå eller gröntonad, med massor av snedstreck och asterisker: De områdena är kommentarer.
- När programmet körs ignoreras kommentarer. Så du kan skriva vad du vill ha inuti dina kommentarer.
- Men det är vanligt att ha kommentarer som förklarar vad du försöker göra.
- Enradig kommentar: //

Kommentar i Java
- Flerrads kommentarer /* */
- Det finns något som heter Javadoc-kommentar.
- Den börjar / ** och slutar * / . Sen ska det finnas en * på varje rad
- Javadoc-kommentar används för att dokumentera kod. Den dokumenterade koden kan sedan omvandlas till en HTML-sida.

6. System.Out.Print
Skriva ut text i JAVA
- För att skriva ut en textsträng i konsolfönstret använder man förprogrammerade metoden System.out.print. Vill vi till exempel skriva ut texten Hello World! skriver vi helt enkelt.
- Det kan till exempel vara svaret på en uträkning, en uppmaning eller ett felmeddelande.
- Java har massor med inbyggda funktioner för att underlätta när man kodar.
public static void main(String[] args) {
System.out.println("Hello World");
}Observera stor bokstav på system och semikolonet vid slutet av kommandot.
System.out.println
System.out.print("Hello World");
public static void main(String[] args) {
System.out.print("Hello World");
System.out.print("Hello World");
}System.out.println("Hello World");
public static void main(String[] args) {
System.out.println("Hello World");
System.out.println("Hello World");
}Skriva ut text på flera rader: System.out.println,
Skillnaden mellan print och println
Kombinera flera textsträngar
public static void main(String[] args) {
System.out.println("Dagens datum är: " + "2019-03-18");
}Skriva ut flera textstränger med hjälp av "+"
Glöm inte att använda citationsteckena! Observera skillnaden mellan dessa två operationer:
public static void main(String[] args) {
System.out.println("1 + 1");
System.out.println(1 + 1);
}7. Datatyper
Vad är datatyper
- I programmering lagrar vi hela tiden information i dataminnet för att kunna använda den vid ett senare.
- Gör vi till exempel en uträkning, vill vi ju kunna spara resultatet på uträkningen till ett senare.
- I Java lagrar man data i variabler av en viss datatyp.
- Exempel på datatyper är Integers som lagrar heltal, String som sparar text.
- Man kan inte lagra heltal i en String eller text i en integer
Vad är datatyper
- Varje datatyp tar upp en viss plats i dataminnet.
- Du vet kanske redan att en dator enbart hanterar ettor och nollor (det vill säga bits).
- Vi ska inte gå in på detalj, men det viktiga att ta med sig är att stora tal behöver fler bits för att lagras, det vill säga större plats i minnet.
- Det kan var bra att fundera en extra gång på vilken datatyp man ska använda så att man inte slösar på minne
- Eller av misstag försöker spara ett för stort värde i en datatyp där den inte får plats, för då kommer programmet att krascha.
Vanligaste datatyperna
- byte, short, integers, och long – Lagrar heltal, exempelvis 3
- float, double – Lagrar decimaltal
- boolean – Kan enbart lagra true (sant) eller false (falskt)
- char – Lagrar tecken, exempelvis ‘C’
- string - Largar text
Heltal
- Vi börjar med heltalen - 0, 1, 2, 3, …, och -1, -2, -3, … ,
- Det finns fyra stycken datatyper som lagrar heltal.
- bitstorlek är hur mycket plats den tar i dataminnet
| Datatyp | Bitstorlek | Min-värde | Max-värde |
|---|---|---|---|
| byte | 8 | -128 | 128 |
| short | 16 | -32 768 | 32 768 |
| int | 32 | -2147 483 648 | 2147 483 648 |
| long | 64 | ≈ −9 × 10^18 | ≈ 9 × 10^18 |
Flyttal
- Decimaltal - kan man använda sig av float eller double.
- Dessa datatyper är användbara exempelvis när man vill spara ett irrationellt tal som pi eller tal med många decimaler.
| Datatyp | Bitstorlek | Min-värde | Max-värde |
|---|---|---|---|
| float | 32 | ≈ −3.4 × 10^38 | ≈ 3.4 × 10^38 |
| double | 64 | ≈ −1.7 × 10^308 | ≈ 1.7 × 10^308 |
Char & String
- Char är perfekt om man vill spara ett enda enskilt tecken, exempelvis bokstaven ‘a’.
- String använder man när man vill spara ett helt ord eller en hel mening.
- Exempelvis “Programmera Java är kul!”.
Boolean
- Boolean är en datatyp som endast anta värdena true eller false.
- Vilket gör att booleska variabler blir väldigt användbara när man vill köra ett program tills ett villkor är uppfyllt.
- Man kan även tänka att true är en etta (1), och false är en nolla (0).
boolean user = true;
boolean password = false;8. Variabler
Variabel
- I program vill man kunna spara undan data för senare användning. T ex man vill mata in ett tal.
- Detta tal måste sparas undan i programmet, till vår hjälp har vi då variabler.
- Variabler hör man på namnet att de lagrar information som kan variera.
- I JAVA finns en mängd fördefinierade variabeltyper. Man måste alltså deklarera vilken sorts typ av variabel man vill använda för att kompilatorn ska förstå vilken sorts data den lagrar.
Skapa en Variabel
- Detta kallas för deklarera variabeln.
- Man anger variabeltyp följt av det variabelnamn.
- I Eclipse kommer variabeltypen indikeras med en röd färgen.
- När vi ska namnge våra variabler så finns det vissa regler.
- öäå bör inte användas som variabelnamn.
- Två variabler som heter samma sak.
- Vi kan inte använda "låsta" namn som t ex int double string.
- Använder vi stora o små bokstäver i namnen så måste vi följa det exakt senare, d vs mittHELTAL och mittHeltal är inte samma variabel.
int mittTal1;
double mittTal2;
String minString;- Första steget är alltså att tala om att variabeln finns och vad vi ska kalla den.
Deklarera Variabel
- Näst stega är att deklarera ett värde till variablerna.
- Man kan även ge ge våra variabler olika värden efter deklarationen, detta kallas då för tilldelning.
mittTal1 = 4;
mittTal2=13.5;
minString = "Hej Svejs";- Man kan även göra både deklaration och tilldelning samtidigt.
-
Notera att vi använder tecknet " för att visa var text börjar och var text slutar.
Variabel
public static void main(String[ ] args) {
int first_number;
first_number = 10;
System.out.println( "First number = " + first_number );
}public static void main(String[ ] args) {
int first_number, second_number, answer;
first_number = 10;
second_number = 20;
answer = first_number + second_number;
System.out.println("Addition Total = " + answer );
}Exempel olika sätt att tilldela
Variabel
public static void main(String[ ] args) {
char varCharacter = 'e';
String varWord = "Hello";
System.out.println( varCharacter + varWord );
}När man deklarera variabler av tecken eller texter så kan man använda både ‘ (enkla citattecken) och " (dubble citattecken)
Konstant
- Man kan sätta variabel som är konstant(som inte förändras) för hela programmet.
- Praxis är att namnge konstanter med endast stora bokstäver.
final datatyp NAMN = värde; // Skapar konstanter
final double FOT = 3.28;
final double YARD = 1.098;
// antal meter
double meter = 1;
// Uträckningar
double svarMeterToFot = meter*FOT;
double svarMeterToYard = meter*YARD;
//Skriv ut
System.out.println( meter + "m är ft = "+ svarMeterToFot );
System.out.println( meter + "m är yard = "+ svarMeterToYard );
Typkonvertering
- Konverteringen ger variabeln x värdet 2.0
- Typkonvertering i Java används för att konvertera en datatyp till en annan.
- Operationen är inte tillåten för
- 8 är av datatypen int
- 7.0 är av datatypen double.
- Tänk på: att när man konverterar från ett decimaltal till ett heltal så tappar vi decimaldelen.
int a = 2;
double x = a;int num = 8 + 7.0;Explicit Typkonvertering
- När en datatyp inte automatiskt kan konverteras till en annan typ kan detta istället ske genom en typkonvertering.
double a = 10.8;
int num = (int) a; // double (64 bit) --> int (32 bit)int num = 8 + (int)7.0;Explicit Typkonvertering
- Det går att konvertera en String till ett tal (int, double, osv)
- parseInt()
- Det går även på andra hållet också, ett tal till string
- toString()
String str = "123";
int intVariabel = Integer.parseInt(str);
double doubleVariabel = Double.parseDouble(str);// int --> String
int intVariabel = 24;
String strI = Integer.toString(intVariabel);
// double --> String
double doubleVariabel = 385.98;
String strD = Double.toString(doubleVariabel);9. Matematiska Beräkningar
Matematiska Beräkningar
- Att initiera en beräkning i Java är enkelt eftersom de allra vanligaste räknesätten finns tillgängliga som standard i Java.
- Java tillhandahåller även standardklassen java.lang.Math som innehåller flera vanliga matematiska beräkningar, så som upphöjt, roten ur och trigonometriska funktioner.
Matematiska Operationerna
| Beräkning | Notation | Datatyp | Ex. int A = 10, int B = 4 |
|---|---|---|---|
| Addition | + | int | A + B = 14.0 |
| Subtraktion | – | int | A – B = 6 |
| Multiplikation | * | int | A * B = 40 |
| Division | / | double | A / B = 2.5 |
| Modulus | % | double | A % B = 2.0 |
| Mindre än | < | boolean | A < B = false |
| Större än | > | boolean | A > B = true |
| Mindre än eller lika med | <= | boolean | A <= B = false |
| Större än eller lika med | >= | boolean | A >= B = true |
| Lika med | == | boolean | A == B = false |
| Inte lika med | != | boolean | A != B = true |
Exempel
Kan man utföra en matematisk operation med olika datatyper?
Double
Integer
// Variabler av datatypen double
double A = 10;
double B = 4;
System.out.println(A+B);
System.out.println(A-B);
System.out.println(A*B);
System.out.println(A/B); // Variabler av datatypen integer
int A = 10;
int B = 4;
System.out.println(A+B);
System.out.println(A-B);
System.out.println(A*B);
System.out.println(A/B);// Variabler av blandade datatyper
int A = 10;
double B = 4;
System.out.println(A+B);
System.out.println(A-B);
System.out.println(A*B);
System.out.println(A/B);Modulus
Modulus returnerar resten vid en division.
int x = 7;
int y = 2;
int mod = x % y;
// mod blir då resten när vi delar 7 med 2 --> mod = 1
int x = 8;
int Y = 4;
int mod = x % y;
// Här blir mod = 0, för att vi får ingen rest när vi delar 8 med 4
int x = 9;
int y = 5;
int mod = x % y;
// Resten blir --> mod = 4Jämförelseoperationer
- Jämförelseoperationerna avgöra om ett värde är större, mindre eller lika stort som ett annat värde.
- Resultatet kommer att bli en boolean (true eller false)
// Variabler av blandade datatyper
int A = 10;
int B = 4;
System.out.println(A > B); // Är A större än B?
System.out.println(A < B); // Är A mindre än B?
System.out.println(A <= B); // Är A mindre eller lika stort som B?
System.out.println(A >= B); // Är A större eller lika stort än B?
System.out.println(A == B); // Är A exakt lika stort som B?java.lang.Math
- Java har en inbyggd klass - java.lang.Math, som innehåller matematiska metoder som underlättar när man vill utföra mer avancerade matematiska beräkningar.
- Som roten ur, logaritmen och upphöjt till, sinus, cosinus och tangens...
- När man ska använda en klass i java som Math så måste man importerar klassen.
- Det gör man högst upp på sidan.
- Börjar med import, följt av static som göra att klassen är synligt i hela programmet.
- Lägger man till (*) på slutet så man metoder i Math.
import static java.lang.Math.*;
public class java_math {
public static void main(String[] args) {
System.out.println(PI); // PI: 3.141592653589793
System.out.println(E); // Eulers tal: 2.718281828459045
}
}java.lang.Math
- Math kan göra det ännu enklare.
- java.lang.Math är ett standardbibliotek i Java
- Man behöver inte importera det först
- För att kalla på biblioteket skriver vi helt enkelt Math., följt av den matematiska operationen.
- När du skiver Math i Netbeans visas en lång lista med alla metoder som finns tillgängliga!
public class java_math {
public static void main(String[] args) {
System.out.println(Math.PI); // PI: 3.141592653589793
System.out.println(Math.E); // Eulers tal: 2.718281828459045
}
}java.lang.Math
- Exempel beräkna 6^2 ( 6 “upphöjt till” 2 ),
- Kvadratroten ur 9
- 5^Pi ( 5 “upphöjt till” Pi)
- Vi skriver helt enkelt Math. följt av den metod vi vill använda. Observera att de flesta metoder i denna klass returnerar en double.
- Det är viktigt att hålla koll på vilken datatyp som används med vilken metoden.
- Man kan t.ex. inte skriva en int när metoden vill ha en double. Vill vi använda oss av int får vi först göra beräkningen och spara ned den i en double först, och sedan konvertera den till en int.
public class java_math {
public static void main(String[] args) {
double num = Math.pow(6.0, 2.0); // num = 36.0
double numSquare = Math.sqrt(9.0); // numSquare = 3.0
double numPowPi = Math.pow(5.0 , Math.PI); // numPowPi = 278.377
}
}10. Scanner
Klassen Scanner
- Java.util.Scanner är en standardklass i Java
- Används för att kunna läsa av inputs av primitiva datatyper.
- Det är ett enkelt sätta att läsa av information som användaren ger till programmet.
Hur man skickar ett värde
- Hur skickar man in värden till programmet?
- Det kanske är en inmatning av vad du heter eller antal produkter som någon har köpt i en affär.
- Scanner kan exempelvis ta input från tangentbordet, filer eller textrutor.

Importera Klassen Scanner
- Vi börjar med att importera klassen Scanner från biblioteket Java.unit.
import java.util.Scanner;
- Vi behöver också skapa ett Scanner-objekt
- Objekt kommer vi inte att gå in på, så för tillfället nöjer vi oss med att lära oss hur vi kan ta in information från användaren med hjälp av Scanner.
import java.util.Scanner; // Importera klassen scanner
Scanner input = new Scanner(System.in);// Skapa ett scanner-objekt som hanterar input- Vi har skapat ett Scanner-objekt som heter input,(kan även heta något annat) notera att vi behöver System.in i parentesen
Rätt Datatyp
- Med Scanner kan man skriva in vilken information som helst i terminal-fönstret.
- Om användaren skriver in en textsträng och vi frågar efter ett heltal så kommer programmet att krascha.
- Där för måste vi ange vilken datatyp vi kommer att skicka till Scanner.
Exempel på nästa slide
Scanner Exempel
import java.util.Scanner; // Importerar klassen Scanner
public class Scanner_exempel {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("Ange första talet: ");
int first = input.nextInt(); // Sparar ned första talet
System.out.println("Ange andra talet: ");
int second = input.nextInt(); // Sparar ned andra talet
// Skriver ut första, andra och första + andra talet
System.out.println(first + " + " + second + " = " + (first+second));
}
}- Vi skapar ett program som frågar användaren om två heltal och sedan addera de två talen och skriver ut svaret.
- Vi antar att användaren endast skriver in heltal.
- Prova vad som händer om skickar in text istället.
Hantera Rätt Datatyp
| Metod | Info | Exempel |
|---|---|---|
| int nextInt() | Sparar ned nästa input som en int,får ett fel om det inte är en int. | input.nextInt(); |
| double nextDouble() | Sparar ned nästa input som en double,får ett fel om det inte är en double. | input.nextDouble(); |
| String next() | Returnerar nästa tecken från scanner | input.next(); |
| String nextLine() | Returnerar nästa rad som en String | input.nextLine(); |
- Det är viktigt att att ange vilken datatyp som användaren kommer att mata in.
11. If
Hur fungerar en if-sats
- En if-sats används för att avgöra om en operation ska utföras eller inte.
- Om villkoret är sant(true) - så utförs operationen.
- Om villkoret är falskt(false) - så utförs inte operationen.
- Det går även att kombinera flera if-satser, så kallade else-if och else.

If, Else-If, Else och Switch
-
If-satsen– Ett eller flera villkor anger ifall en eller flera operationer ska utföras
-
Else-if – Operationen / operationerna innanför else-if måsvingar utförs ifall villkoret för if-satsen är falskt och villkoret för else-if är sant.
-
Else – utförs ifall if-satsen och alla else-if satserna är falska.
- Switch – en sats som kan användas istället för if-satsen när man har en flervalssituation.
Logiska Villkor
- Repetera de logiska operatorerna
| Logiska villkor | Notation |
|---|---|
| Lika med | == |
| Inte lika med | != |
| Mindre än | < |
| Minde än och lika med | <= |
| Större än | > |
| Större än och lika med | >= |
| Logiskt AND(och) | && |
| Logiskt OR(eller) | || |
Jämförelse- & Logiska Operatorer
| Namn | Syntax | Beskrivning |
|---|---|---|
| Och-operatorn | a && b | Sant om a och b är sanna. |
| Eller-operator | a || b | Sant om a eller b är sanna. |
| Inte-operatorn | !a | Sant om a är falskt |
| Inte lika med-operatorn | a != b | Sant om a är falskt och b är falskt |
| Större än | a > b | Sant om a är större än b |
| Mindre än | a < b | Sant om a är mindre än b |
| Mindre eller lika med | a <= b | Sant om a är mindre eller lika stort som b |
| Större eller lika med | a >= b | Sant om a är större eller lika stort som b |
Skapa en if-sats
- If-satsen skapas med följande syntax.
- Först används det reserverade ordet if.
- Följt av ett logiskt uttryck inom parentesen.
- Om det är sant(true) så kommer operationen innanför måsvingarna{} utföras.
if (logiskt uttryck) {
Operation/Operationer …
}Exempel på nästa slide
Skapa en if-sats
Exemple - If-sats
public class Main{
public static void main(String[] args) {
// If-satsen är sann, och kommer därför att köras
if(true){
System.out.println("If-satsen körs");
}
// If-satsen är falsk, och kommer därför inte att köras
if(false){
System.out.println("If-satsen körs inte");
}
// Programmet fortsätter som vanligt
System.out.println("Programmet fortsätter");
}
}If-sats med boolean
Exemple - If-sats
Prova att byta ut true mot false.
boolean sayHelloWorld = true; // Deklarerar en variabel som heter "sayHelloWorld" som tilldelas värdet true
// Om variabeln "sayHelloWorld är sann (true), utför kommandot innanför måsvingarna { }
if(sayHelloWorld == true){
System.out.println("Hello, World!"); // Skriv ut textsträngen "Hello, World!"
}If-sats med jämförelsevillkor
- Man kan skriva ett jämförelsevillkor i if-satsen.
- Exemple om du kontrollera om int-variablen ligger inom ett intervall mellan 0 och 200
- Prova att ändra num till 210
int num = 100;
if(num > 0 && num < 200){
System.out.println("Number: " + num);
}Else-satsen
- Else-satsen anger vad som ska hända om if-satsen villkort inte uppfylls (false).
- Else är också ett reserverat ord JAVA
- Observera att else-satsen inte har något logiskt uttryck.
- Else-satsen kommer alltid att utföras om if-satsen är false.
- Det är if-satsen som avgör om else-satsen ska utföras eller inte.

if (logiskt uttryck) {
Operation/Operationer …
} else {
Operation/operationer …
}Else-satsen
Exempel - else-satsen
int number = 5;
if (number > 6) {
System.out.println("Det här är IF-satsen")
} else {
System.out.println("Det här är ELSE-satsen")
}Else-satsen
Exempel - else-satsen
- Vi gör ett program om lampan är släckt och vi trycker på knappen så tänds lampan. Och tvättom, trots att vi tycker på samma knapp.
- Så samma knapp utför olika villkor.
- Vi har två villkor - tänt eller släckt.

Kod på nästa slide
Else-satsen
Exempel - else-satsen
boolean isLampOn = false; // Variabeln isLampOn deklareras till false, alltså är den släckt.
if(isLampOn == true){ // Om lampan är true, alltså tänd, utför kommandon innanför måsvingarna '{}'
isLampOn = false; // Sätt variabeln isLampOn till false, lampan släcks.
} else{ // Om if-satsens villkor inte är sant (true), utför kommandot innanför måsvingarna {}
isLampOn = true; // Sätt variabeln isLampOn till true, lampan tänds.
}
System.out.println("Status på lampan: "isLampOn);Else-if satsen
- Else-if satsen hjälper till att lösa problem om man har flera olika operationer.
- Beroende på vilket villkor som är uppfyllt, ska en specifik operation utföras.
- Är en kombination av if- och else-satsen.
- Man kan ha flertalet else-if satser.
- Om else-if satsen är sann(true) så exekveras inte else-satsen.

Else-if satsen
- Else-if satsen har samma syntax som if-satsen.
- else-if är reserverade ord
- Följt av ett logiskt uttryck inom parentesen
- Inom måsvingar {} anger man operationerna
- If-satsen har högre prioritet än else-if satsen
if (logiskt uttryck) {
Operation/Operationer …
} else if (logiskt uttryck) {
Operation/Operationer …
} else {
Operation/Operationer …
}Else-if exempel
- Skapa ett program som skriver ut hur stor rabatten är,
med hjälp av if, else-if och else.
- En butik har följande rabattsystem:
- Är köpet är större än 500 kronor får man 5 % rabatt.
- Är köpet är större än 1000 kronor får man 10 % rabatt.
- Är köpet är större än 1500 kronor får man 15 % rabatt.
- Är köpet är större än 2000 kronor får man 20 % rabatt.

Kod
nästa
slide
Else-if exempel
int cost = 400; // Deklarerar en variabel med namnet "cost" som får värdet 400.
if(cost >= 2000){ // Om kostnadet är större eller lika med 2000 kronor,
System.out.println("Rabatten är 20%"); // Skriv ut "Rabatten är 20%".
}
else if(cost >= 1500){ // Om kostnadet är större eller lika med 1500 kronor,
System.out.println("Rabatten är 15%"); // Skriv ut "Rabatten är 15%".
}
else if(cost >= 1000){ // Om kostnadet är större eller lika med 1000 kronor,
System.out.println("Rabatten är 10%"); // Skriv ut "Rabatten är 10%".
}
else if(cost >= 500){ // Om kostnadet är större eller lika med 500 kronor.
System.out.println("Rabatten är 5%");
}
else{ // Om ingen av ovanstående if-satser är uppfyllda,
System.out.println("Rabatten är 0%"); // Skriv ut "Rabatten är 0%".
}
Switch
- Switch-satsen används istället för if-satsen när man har en flervalssituation.
- Switch är en kompakt version av if och är effektiv när man ska välja mellan ett specifikt antal operationer.
- Switch kan innehålla en variable eller ett uttryck, heltal, char eller String
- Funkar inte med long, float, double eller boolean.
switch (uttryck) {
case 1:
Operation/operationer
break;
case 2:
Operation/operationer
break;
case 3:
Operation/operationer
break;
.
.
.
default:
Operation/operationer
break;
}Switch jämförelse If
int usSize = 9;
switch (usSize){
case 6:
System.out.println("Eu: 39");
break;
case 7:
System.out.println("EU: 40");
break;
case 8:
System.out.println("EU: 41");
break;
case 9:
System.out.println("EU: 42");
break;
default:
System.out.println("Hittade inte");
break;
}int usSize = 9;
if(usSize == 6){
System.out.println("EU: 39");
}
else if(usSize == 7){
System.out.println("EU: 40");
}
else if(usSize == 8){
System.out.println("EU: 41");
}
else if(usSize == 9){
System.out.println("EU: 42");
}
else {
System.out.println("Hittade inte");
}Switch med String
String typeOfDay;
switch (dayOfWeekArg) {
case "Monday":
typeOfDay = "Start of work week";
break;
case "Tuesday":
case "Wednesday":
case "Thursday":
typeOfDay = "Midweek";
break;
case "Friday":
typeOfDay = "End of work week";
break;
case "Saturday":
case "Sunday":
typeOfDay = "Weekend";
break;
default:
typeOfDay = "Invalid day of the week: " + dayOfWeekArg;
}
System.out.println(typeOfDay);12. Loopar
Vad är en Loop
- När man vill upprepa en operation eller sekvens flera gånger så använder vi av oss en loop.
- Loopar är ett sätt att upprepa en operation ett viss antal gånger.
- Det finns olika sorters loopar som används beroende om man vill att en operation ska utföras.
- De tre vanligaste looparna
- For-loopen
- While-loopen
- Do-loopen
Hur fungerar en Loop
En loop kan illustrera med hjälp av flödesschemat

- Programsekvensen börjar vid Start och kontrollerar sedan ifall villkoret är uppfyllt.
- Ifall villkoret är uppfyllt, true (Ja) så utförs operationen, är villkoret inte uppfyllt false (Nej) så går programmet vidare.
- Loopen upprepar sedan processen och går tillbaka och kollar ifall villkoret är uppfyllt.
While-loop
- While-loopen används i Java för att upprepa en sekvens av operationer flera gånger.
- Detta möjliggör generella och dynamiska program eftersom kod kan återanvändas ett ex antal gånger.
- Om antalet inte är fast värde, rekommenderas while-loop.
- While-loopen skapas med det reserverade ordet while, följt av ett villkor inom parantes.
- Inom måsvingarna specificeras alla operationer som ska exekveras (utföras) om och om igen, så länge som villkoret är uppfyllt (true).
while (villkor) {
operation / operationer
}While-loop - Exempel
- Exemplet skriver ut “Hello, World!” så länge villkoret är uppfyllt, det vill säga så länge som variabeln i är mindre än 5
- Programmet kommer alltså skriva ut textraden “Hello, World” fem gånger och sedan avsluta while-loopen.
int i = 0; // Deklarerar variabelen i, tilldelas 0.
while(i < 5){ // Så länge i är mindre än 5, ska loppen köras.
System.out.println("Hello, World!"); // Skriver ut "Hello, World!".
i++; // i = i + 1
} Do-loop
- Exekverar (utför) operationerna först och kontrollerar därefter villkoret.
- Utför en operation/operationer (ett kodblock) en gång eller fler.
- Är användbar då vi vet att en operation av en while-loop ska utföras innan villkoret för loopen ska kontrolleras.
- Exekveras, liksom while-loopen om dess villkor är true (sant).
Do-loop
- Do-loopen börjar med att utföra en sekvens av operationer.
- När operationerna är utförda, kontrollerar do-loopen om ett villkor är uppyllt eller inte.

- Är villkoret uppfyllt så utförs sekvensen av operationer igen.
- Är villkoret inte uppfyllt, fortsätter programmet som vanligt.
Do-loop
- Do-loopen har många likheter med while-loopen, men notera skillnaderna i deklarationen.
- Innanför måsvingar specificerar man ett kodblock, en sekvens av operationer som ska utföras.
- Detta kodblock kommer utföras minst en gång. Efter kodblocket avslutar man do-loopen genom att skriva while följt av ett villkor.
- Är detta villkor uppfyllt, så kommer kodblocket utföras återigen tills dess att villkoret blir false.
do {
operation / operationer
} while (villkor);Do-loop
int i = 0;
do{ // Start på Do-loopen
System.out.println("i har värdet: " + i);
i++;
}while (i < 3); // Kontrollerar om värdet på i är mindre än 3, är fallet så,
For-loop
- Man rekommenderat att använda for-loopen om antalet är ett bestämt antal.

- For-loopen börjar med att kolla om ett villkor är uppfyllt, true.
- Ifall villkoret är uppfyllt (Ja) så kommer operationerna att utföras.
- När operationerna är utförda ökas ett värde, och går till början av for-loopen igen.
- Är villkoret fortfarande uppfyllt (efter att initialvärdet har ändrats), så utförs operationerna igen. Detta fortsätter så länge villkoret är uppfyllt.
- När villkoret inte längre är inte uppfyllt, false, (Nej) så går programmet vidare.
For-loop
- For-loopens “huvud” har tre komponenter:
- Initialvärde: anger vid vilket värde som loopen börjar räkna ifrån, ofta int i = 0.
- Villkor: avgör vilket logiskt villkor som ska vara uppfyllt för att exekvera loopen, t.ex. en variabel som är mindre än ett visst värde.
- Förändring: säger hur initialvärdet ska förändras, t.ex. öka, minska osv.
for (initialvärde; villkor; förändring){
operation / operationer
}For-loop
- Först specificerar man ett initialvärde int = 0, det vill säga en integer variabel med namn i.
- Sedan anger man att loopen ska upprepas så länge som
i < 5, det vill säga fem gånger i detta exempel. - Slutligen specificerar man hur mycket som variabeln ska ändras efter varje loop, i detta fall öka med 1.
for(int i = 0; i < 5; i++) { // for-loopen upprepar operationen så länge som i är mindre än 5
System.out.println("Räknare: " + i); // Skriver ut textsträngen "Räknare: " samt värdet på variabeln i.
} 13. Flödesschema
Flowchart - Flödesschema
- Flödesschema är ett diagram som visar en process, ett system eller en datoralgoritm.
- Flödesscheman använder rektanglar, ovaler, diamanter och pilar för att definiera typ av steg.
- Om vi tar hänsyn till alla olika former av flödesscheman, är de ett av de vanligaste diagrammen på planeten, som används av både tekniska och icke-tekniska personer inom många fält.
Flowchart - Flödesschema



In- och output anges med denna symbol
Programet
startar eller slutar
Pilar sammanbindningen flödesdiagrammen och ger en bättre överblick över programmet än vad pseudokod gör.
Flowchart - Flödesschema


Något utförs.
Kallas process och rymmer beräkningar och händelser som inte omfattas av de andra symbolerna, d.v.s ej val eller in- och utput.
Ett val mellan två alternativ.
Denna symbol betyder val eller beslut.
(if och switch) men även utgöra en del av en loop (for, while och do..while).
Flowchart - Flödesschema
if(tal<10)
tal=10;

Flowchart - Flödesschema
if(tal<10)
tal=1;
else
tal=tal/10;

Flowchart - Flödesschema
do{
System.out.print(tal);
tal++;
}while(tal<10);while(tal<10){
System.out.print(tal);
tal++;
}

Flowchart - Flödesschema

14. Stuktur
Att skriva läsbar kod
-
Det är viktigt att skriva läsbar kod som är lätt att underhålla, debugga och förändra.
-
Inte minst är det viktigt för dig själv, men det är även av stor vikt om du jobbar i ett projekt där många ska bidra med kod.
-
I såna fall måste alla skriva mer eller mindre likadan kod, så att alla förstår hur saker fungerar.
-
I dessa fall använder man sig ofta av en så kallad stilguide, som talar om hur kod ska formateras, hur variabler och metoder ska namnges, osv.
Blankrader & tabbar
-
Hur man formaterar koden man skriver har egentligen ingen större betydelse för Java-kompilatorn.
-
Däremot är det ett viktigt verktyg för att skapa läsbar kod.
-
Precis som i fallet med kommentarer kan vettig formatering hjälpa dig själv och andra att lättare läsa och förstå din kod.
-
De flesta moderna utvecklingsverktyg hjälper dig med att formatera din kod på ett vettigt vis.
-
Det viktigaste man ska göra är att indentera sin kod. Indentera är svengelska för att göra indrag i marginalen, d.v.s. att börja skriva en bit in på raden.
-
Man formaterar sin kod med hjälp av tabbar.
-
Detta hjälper till så att det går att se strukturen på programmet.
Blankrader & tabbar
package helloWorld;
public class HelloWorld {
public static void main(String[] args) {
int cost = 400;
if(cost >= 2000){
System.out.println("Rabatten är 20%");
}
else if(cost >= 1500){
System.out.println("Rabatten är 15%");
}
else if(cost >= 1000){
System.out.println("Rabatten är 10%");
}
else if(cost >= 500){
System.out.println("Rabatten är 5%");
}
else{
System.out.println("Rabatten är 0%");
}
}
}
Struktur på sidan
- På rad 1 så har vi: "package helloWorld;"
- Lägg märke till hur att raden slutar med en semikolon.
- Om du saknar semikolonet kommer programmet inte att kompilera.
- Rad 3 så har vi klassnamnet:
- "public Class HelloWolrd{}"
- Man måste berätta för Java att
kodsegment startar och slutar.
Det gör du med {}
- Rad 5 så har vi main
- "public static void main(String[] args){}"
- Main ligger i "public Class HelloWolrd{}"
- När ett Java-program startar, letar det efter en metod som kallas main. Den utför sedan någon kod inom de {} på main.

15. Figuruppgifter
Introduktion
-
Ladda ner projektet “DrawApplication”.
-
Öppna det i Eclipse eller importera det till NetBeans
-
I classen “DrawJpanel” finns en funktion som heter paintComponent (Graphics g)
-
Här kan man rita olika figurer. Utgångsläget är att en vit rektangel ritas över hela fönstret.
-
Till funktionen skickas Graphics g. Det är med objektet g som vi kan rita saker:
Introduktion
Viktigt att tänka på!
-
Alla koordinater anges från fönstrets övre vänstra hörn till figurens övre vänstra hörn.
-
x ökar åt höger.
-
y ökar nedåt. (tvärtemot matematikens värld)
-
Så längst upp till vänster ligger koordinaten (0,0)
Kommando för rita
-
g.setColor(Color.blue) - Från och med nu ritas allt med blått.
-
g.drawRect(x, y, bredd, höjd) - Icke ifylld rektangel, värden sätts med (int).
-
g.drawOval(x, y, bredd, höjd) - x,y anges även här till ett tänkt “hörn”.
-
g.drawArc(x, y, bredd, höjd, startvinkel, vinkel) - För att rita “tårtbitar” eller “glada munnar”.
-
g.fillRect() och g.fillOval() och g.fillArc() - Samma som ovan fast ifyllda.
-
g.drawLine(x1,y1, x2,y2) - En linje från punkt ett till punkt två.
Egna Färger
-
Color minFarg = new Color(255,255,0); - Ange RGB med int 0-255
-
Color minFarg = new Color(1f, 0.5f, 0); - Ange RGB med float 0-1
-
g.setColor(minFarg); - Notera att Color inte behövs framför minFarg
Figuruppgifterna
-
Ladda ner projektet “Figuruppgifter”.
-
Öppna det i Eclipse eller importera det till NetBeans
-
I classen “FigurJpanel” finns en funktion som heter paintComponent (Graphics g)
Det är här vi löser alla figuruppgifter.
Figuruppgifterna
- En liten bit ner i funktionen står en rad if-satser. Varje if-sats motsvarar en uppgift.
- De fem första uppgifterna är redan påbörjade. Vill man lösa en annan uppgift skriver man dit en ny if-sats med uppgiftens nummer.
Så här ser första if-satsen ut:
if(figure == 0)
{
g.setColor(Color.black);
g.drawRect(150,200,40,40);
// drawRect får alltså inte skrivas fler gånger...
}
Figuruppgifterna
-
När programmet körs första gången så syns ett fönster med en scrollist längst ner som står på noll. Fyrkanten som ritas inuti if-sats noll syns i fönstret.
-
Genom att dra i scrollisten så ser man det som ritas i de andra if-satserna. Alltså elevens lösningar på de andra uppgifterna.
Regler
-
Eleven ska rita upp figurerna som hittas i “prisskåpet”.
-
Den enda grundregeln som finns är att ett ritkommando (t.ex. drawRect eller fillOval) bara får användas EN gång per uppgift.
-
DrawRect och DrawOval får såklart användas en gång vardera men inte mer.
-
Uppgifterna måste lösas genom att loopa och använda if-satser och variabler.
-
Eleven får göra hur som helst så länge hen håller sig inom if-satsen för den uppgiften.
-
För en större utmaning finns avancerade regler på de flesta uppgifter.
-
För det mesta spelar inte storlek eller färg så stor roll på uppgifterna, men en del uppgifter är det viktigare på. En del uppgifter blir märkbart lättare om
16. Array
Array
-
Vi har tidigare spara värden i variabler, exempelvis:
int tal = 10; -
Variabeln tal, av typen int (heltal), tilldelas värdet 10.
-
Men tänk om vi har hundra värden som vi vill spara samtidigt? Tusen värden? En miljon värden?
-
För att kunna hantera en väldigt stor mängd av data samtidigt, använder vi oss av arrayer
(även kallat fält eller listor). -
Nu kan vi börja spara flera värden i en och samma variabel.
-
Vi ska börja att titta på endimensionella arrayer, där vi kan tänka oss en array (fält) som en samling eller ett block av värden.
int[] arr = {22, 8, 97, 3};Array
-
I stället för att skapa separata variabler till varje värde, kan vi istället skapa en array som håller i alla värden samtidigt.
-
När vi utvecklar våra program så kommer vi ofta hantera stora samlingar av värden/objekt av samma typ.
-
Då är en array väldigt användbar för att kunna strukturera och gruppera ihop dessa värden.
Array - Hur Fungerar
-
Om man tänker en variabel som ett objekt/låda som innehåller en datatyp och ett värde.
-
Om vi nu tänka en Array som en låda med flera lådor.
-
Vi kan komma åt varje låda med hjälp av dess index, det vill säga vilket position elementet har i arrayen.
1
0
1
2
3
field
Array - Tänka på
-
Efter vald datatyp så behöver vi skriva två hakparenteser [ ] så kompilatorn vet att det är ett fält vi vill initiera.
-
Indexering börjar alltid på 0, det vill säga första värdet får index 0. Andra värdet får index 1 och så vidare.
-
Alla värden i en array måste vara av samma datatyp. Exempelvis kan du inte spara en double i ett fält med datatypen int.
-
Det går inte ändra antal element i en array efter att den har skapats.
Array - Skapa
-
Ett sätt att deklarera (skapa) en array i Java är med följande syntax:
datatyp[] namn = new datatyp[ antal element ];- Först anger man vilken datatyp fältet innehåller, följt av en hakparantes [ ].
- Sedan ger man ett namn på fältet följt av “= new datatyp”. Datatypen måste vara densamma vid båda tillfällena.
- Avslutningsvis anger man antal element som arrayen ska innehålla inom hakparantes, följt av semikolon.
int[] field = new int[4];Array - Skapa
-
Vi har nu skapat ett fält av datatypen int med namnet field, fältet innehåller fyra element och under varje element står index för respektive element.
-
Eftersom vi inte initierade något startvärde för elementen i fältet så har de alla automatiskt tilldelats värdet 0.
int[] field = new int[4];field[1]
field[0]
field[2]
field[3]
0
0
0
0
field
Array - Skapa
-
Nu kan vi börja att spara ned värden i fältet
-
Varje element nås med hjälp av dess index.
field[0] = 22;
field[1] = 8;
field[2] = 97;
field[3] = 3;field[1]
field[0]
field[2]
field[3]
22
8
97
3
field
Array - Skapa
-
Det går att skapa en array och tilldela på samma gång.
Datatyp[] namn = { värde, värde, värde, värde, … } ;field[1]
field[0]
field[2]
field[3]
22
8
97
3
field
int[] field = {22, 8, 97, 3};- Med hjälp av en rad kod har vi skapat en array av datatypen int med namnet field, fältet innehåller fyra element och har initierade värden.
Array - Vilken metod
-
Ifall arrayen inte har initierade värden eller många element som inte har initierade värden så är metod 1 att föredra.
-
Ett fält där varje element har ett startvärde så är metod 2 smidigare och snabbare att använda sig av.
-
Känner du dig osäker på fält och hur de är uppbyggda och deklareras så använd dig av metod 1. Den tar lite längre tid att deklarera och är mer utförlig, men det kan bidra till att öka förståelsen.
17. Array med loopar
Array - Enhaced for-loop
-
Enhanced (förstärkt eller förenklad) for-loop är ett hjälpmedel för att enkelt och snabbt gå igenom alla element i ett fält (array).
-
Den har liknande egenskaper som den “vanliga” for-loop, men loopar igenom ett specifikt antal gånger.
Array - Hur man loopar
-
I Java är det möjligt att iterera, gå igenom alla element i en array med hjälp av en for-loop.
-
Man behöver alltså inte hålla reda på hur stort eller litet fältet är eftersom en enhanced for-loop går igenom alla element automatiskt.
for (datatyp element : array) {
operation/påstående
}- Vi börjar med for och innanför parantes anger vi vilken datatyp arrayen har string eller int.
- Sedan kommer variabelnamn (i detta fall element).
- Sedan anger man ett kolon (:), följt av den array man vill iterera igenom. Innanför måsvingarna skriver vi sedan de operationer vi vill göra.
Array - Exempel 1
-
Vi börjar med ett enkelt exempel där vi loopar igenom ett fält som innehåller fyra namn.
String[] names = {"Jonas", "Lisa", "Gustav", "Elin"};- Nu har vi en array som heter names och som innehåller element av typen String (textsträngar). Nu kan vi enkelt loopa igenom alla element i arrayen:
for (String val : names) {
System.out.println("Hej " + val);
}Utskrift:
Hej Jonas
Hej Lisa
Hej Gustav
Hej ElinArray - Exempel 2
-
Nu ska vi testa att summera alla heltal i en array.
-
Vi en variabel med namn total och en array med namn field som innehåller fyra heltal:
int total = 0;
int[] field = {20, 33, 40, 55};- För att räkna ut summan av alla tal i arrayen, kan vi loopa igenom alla tal med en enhanced for-loop och spara summan i variabeln total:
for (int i = 0; i < field.length; i++){
total = total + field[i];
}
System.out.print("Total: " + total);Utskrift:
"Total: 148Får automatisk längden på loopen
Array - Söka
- Om vi vill söka igenom en array, t.ex. så letar vi efter positionen för ett visst element för att sedan kunna byta ut det.
- Vi kommer använda oss av en while-loop, för att hitta positionen, när någon av de villkoren inte uppfylls så avbryts while-loopen.
- För att se ifall elementet på den positionen i array överensstämmer med det eftersökta värdet så kommer vi använda en if-sats som ifall värdet hittas ändrar boolean variabeln till sant och loopen kommer sluta. Skulle värdet inte överensstämma så kommer positionsvariablen att öka med ett för att kolla nästa position i fältet.
Exempel på nästa slide
Array - Söka
int[] field = {5, 6, 33, 54, 77, 87, 32, 78, 98}; // Array vi ska söka igenom
int searched = 78; // Det eftersökta värdet
int pos = 0; // För att kunna spara ned positionen (index)
boolean found = false;
while (pos < field.length && !found) {
if (field[pos] == searched){
found = true; // Vi har hittat värdet
}
else{
pos++; // Öka positionsvariabeln
}
}
// Om vi sedan vill skriva ut positionen
if (found == true){
System.out.println("Värdet hittades på index: " + pos);
}
// Eller om vi inte hittade värdet
else{
System.out.println("Värdet kunde ej hittas i den genomsökta array");
}Array - Vanliga Fel
-
Ett vanligt misstaget är när man försöka komma åt ett element som inte existerar.
-
Om vi tar ett enkelt exempel så kommer det vara enklare att sedan när vi går in på vanliga algoritmer.
-
Vi skapar ett fält och tänker sedan spara ned ett värde i fältet.
int[] field = new int[10];
int[10] = 5;Detta ger en error för field har 10 element, med index räckvidd från 0 till 9.
Array - Exempel Jämna Tal
-
Vi ska skriv ett programsegment som skriver ut antalet element som är udda tal.
int[] field = {2, 20, 3, 13, 15, 3, 9, 10, 1, 5, 8};int counter = 0;-
Vi skapa en räknare som vi kan uppdatera för varje udda tal som vi hittar.
for(int i = 0; i < field.length; i++){
// Om element ej är jämnt delbart med 2 (dvs ojämnt), öka Count med 1.
if(field[i] % 2 == 0){
count++;
}
}System.out.println(counter);-
Vi kommer använda oss av en for-loop för att gå igenom Arrayen.
-
Inne i for-loopen använder vi en if-sats med villkoret att ifall talet är ej jämnt delbart med 2, det vill säga ett ojämnt tal, så kommer vi öka räknaren count med ett.
- Vill vi sedan skriva ut talet för att kolla att det blev korrekt skriver vi bara
Array - Exempel Jämna Tal
-
En illustrera på det här exemplet med en figur kan vi tänka oss det som följande.
-
Notera hur counter (räknaren) ökar med +1 för varje udda tal.

Array - Exempel Jämna Tal
-
Givet array names i koden nedan, som innehåller namn. Skriv ut det med omvänd ordning i en tabell som börjar på Det vill säga:
Array - Exempel Omvänd
String[] names = {"Erik", "Stina", "Tom", "Gustav", "Amanda",
"Elin", "Rebecca", "Hampus"};for (int i =0; i < names.length; i++){
System.out.println(i+1 + ". " + names[names.length - 1 - i]);
}-
Hampus
-
Rebecca
-
Elin osv …
- i + 1, är för att i = 0 och vi vill börja på 1. (vi sätter i = 0 för att börja på index 0)
- names[names.lenght – 1 – i] gör så att vi börjar på sista elementet i fältet och då i ökar så går vi mot början.
Lösning:
-
Skriv ett program som gör så att de element med jämna index (0, 2, 4 … ) tilldelas deras respektive indexvärde samt att de element med ojämna index får värdet ett.
-
Med andra ord:
Array - Udda och Jämna
int[] field = new int[25];Index 0: 0
Index 1: 1
Index 2: 2
Index 3: 1
Index 4: 4
Index 5: 1
Index 6: 6 osv..
// Gå igenom array
for (int i = 0; i < field.length; i++){
// Kolla ifall index är jämnt
if(i % 2 == 0){
field[i] = i;
}
// Om inte jämnt ge det värdet 1
else{
field[i] = 1;
}
// Skriva ut index med respektive värde
System.out.println("Index " + i + ": " + field[i]);
}
Lösning:
Array - Udda och Jämna
18. Array - Flerdimensionell
Array - Flerdimensionell
-
I Java är det möjligt att skapa en array i flera dimensioner.
-
Vi betraktade en Endimensionella Array som listor med värden.
-
På samma sätt kan vi se en Flerdimensionell Array i två dimensioner som ett rutnät
(matriser med rader och kolumner). -
Det medför då att vi får fler index och det brukar beskrivas som fält av fält vilket medför att raderna kan ha olika längd.
Array - Skapa Flerdimensionell
-
Deklarerar en flerdimensionell array på liknande sätt som med endimensionella array.
// En 2-dim array
int[][] twoField = new int[ antal rader (x-led) ][ antal kolumner (y-led) ];
// En 3-dim array
int[][][] threeField = new int[ x-led ][ y-led ][ z-led ];Array - Skapa Flerdimensionell
Vi skapar en tvådimensionell array (en tom array) som har 4 rader och 3 kolumner.x
int[][] twoField = new int [4][3];
Vill vi sedan redigera eller använda ett element i matrisen så gör vi det enkelt på samma sätt som för endimensionella fallet.
// Sätter in två värden i matrisen
twoField[0][2] = 15;
twoField[2][1] = 7;
// Här lägger vi ihop två celler
int sum = twoField[0][2] + twoField[2][1];
// sum = 15 + 7 = 22
int multi = twoField[0][2] * twoField[2][1];
// multi = 15 * 7 = 105
Array - Skapa Flerdimensionell
- Vi kan också skapa flerdimensionell array med metod 2 som vi såg för endimensionella fallet. Där vi initierar värden direkt när vi skapar array.
int[][] twoField2 = {{2, 3},
{34, 56},
{44, 654, 43},
{2, 3, 23, 44}};
- Viktigt! - vi inte har skapat en 4 x 4 matris utan att raderna har olika många kolumner.
- Till exempel om vi skulle vilja lägga till ett element på index [ 1 ][ 2 ]
- så kommer vi att få OutOfBoundsException.
- Vi behöver i såna fall skapa en ny array för att kunna lägga till fler index.
twoField2[1][2] = 15;
19. Arraylist
Arraylist
-
ArrayList är en inbyggd standardklass i Java som gör det enkelt och smidigt att arbeta med data som kan komma att förändras i antal under arbetets gång.
-
Om vi behöver förändra hur många lagringsplatser vi har.
-
Så vet vi från början att vi kan komma att behöva ändra storleken på antalet lagringsplatser så är en ArrayList att föredra över en array.
-
Vi kan illustrera en ArrayList på liknande sätt som en Array och tänka oss att vi har flera lagringsplatser som bara forsätter

Arraylist - Skapa
-
Det är några saker som skiljer sig från när vi deklarerar en ArrayList gentemot en Array.
-
Istället för [ ], som vi använde för en Array ska vi nu använda, < > istället.
-
Då vi endast kan spara objekt i en ArrayList så behöver vi ange omslagsklassen vid deklarationen, det vill säga att vi inte kan spara primitiva datatyper i en ArrayList.
-
Notera parenteserna på slutet av deklarationen också
ArrayList<Integer> numbers = new ArrayList<Integer>();
ArrayList<Character> initials = new ArrayList<Character>();Arraylist - Egenskaper
-
Java har ett par inbyggda kommandon i (containerklassen)
-
Dessa används bland annat för att ta bort, lägga till, modifiera eller läsa av värden i en lista
-
Det är samma kommandon för ArrayList som för List, förutom namnet på paketet vi importerar
-
Om vi väljer att arbeta med ArrayList så behöver vi först importera paketet java.util.ArrayList
-
Vi kan sedan skapa en lista med Integers som inte kommer att innehålla några element till en början.
// Importera längst upp på sidan
import java.util.ArrayList;
ArrayList <Integer> listEx = new ArrayList<Integer>();Arraylist - Lägga till, tabort
-
För att lägga till ett element, "X", längst bak i listan använder vi den inbyggda metoden
-
Vi får då resultatet ( sista platsen i listan med index: n)
listEx.add(X);
- Man kan även välj vilken position.
- Man lägger först vilken
plats sen var som ska vilken
plats och sedan vad vi ska
stoppa på den platsen.
listEx.add(Z,X);
- Om man vill ta bort ett element använder man remove
listEx.remove(Z);Arraylist - Läsa Av, Modifiera
-
Läsa av och modifiera element
listEx.get(Z);
// Resultatet blir elementet på plats nr Z i listan
listEx.set(Z,X);
// Ersätter elementet på plats Z i listan med X-
Fler användbara egenskaper för arraylist
listEx.size();
// Ger antalet element i listan
listEx.indexOf(X);
// Returnerar index av första förekomsten av elementet X,
// ifall X inte finns i listan så returneras -1Arraylist - Loopa igen
-
Om vi vill gå igenom en lista från början till slut för att t.ex. summera ihop elementen i listan eller kanske för att skriva ut elementen så gör vi det på samma sätt som för ett fält, vi kan använda en for-loop.
int total = 0; // För att kunna summera ihop värdena
for (int i = 0; i < listEx.size(); i++) {
total = total + listEx.get(i); // Räkna ihop totalen
System.out.println(listEx.get(i)); // Skriva ut varje element
}20. Metoder
Metoder
- En stor fördel med metoder i Java är att du
inte behöver skriva samma kod flera gånger. - Du kan istället anropa en metod.
Metoder i korthet: - En metod utför ett block av operationer när
den blir kallad på,
vilket innebär att istället för att skriva
samma kod flera gånger om, kan vi istället
återanvända kod och köra den flera gånger, på olika ställen i programmet. - En metod kan få in ett eller flera värden, så kallade inparametrar, och kan även skicka tillbaka, returnera ett eller inget värde.
- Metoden avslutar alltid när ett värde har returneras.

Metoder
- Metoder är ett väldigt kraftfullt verktyg eftersom de är helt oberoende av annan kod.
- En metod kan dessutom anropa en annan metod.
- Användningsområdena för metoder är många och de hjälper till att strukturera upp och förenkla programmen vi skapar.
- Du kan tänka dig en metod som en svart låda. Först skickar du in ett eller flera värden i lådan och får tillbaka ett annat men du behöver inte veta vad som faktiskt händer i lådan, hur koden är programmerad.
- Det viktiga är att du vet vad som händer när man anropar metoden.
- Detta abstraherar programmet och skapar ett mer kompakt program.
Metoder - Vad är?
- VAD ÄR EN METOD I JAVA?
- Ofta när man programmerar, vill man att samma kod ska utföras flera gånger fast vid olika ställen i programmet.
- Med en metod, kan vi specificera ett block av operationer metoden utför när den blir kallad på.
- Detta blir en stor fördel, eftersom du inte behöver skriva samma kod flera gånger om.
- I Java använder man metoder för att utföra en sekvens av operationer.
- Du kan se en metod som en “svart låda”.
- Man skickar in ett värde, och får ut ett annat.
- Vad som händer inne i lådan är egentligen inte det viktiga, det viktiga är att du vet vad du får tillbaka från metoden.

Metoder - Skapa
- Hur skapar vi ett program som anropar en metod tre gånger.
- Det enda metoden gör är att skriva ut en text.
public class Metoder {
// Skapar en metod som heter my_method
public static void my_method(){
System.out.println("Detta är min första metod"); // Metoden skriver ut en textsträng
}
public static void main(String[] args) {
my_method(); // Anropa metoden
my_method(); // Anropa metoden
my_method(); // Anropa metoden
}
}- Vi har skapat en metod som heter my_method().
- rad 3-5 som är själva metoden.
- Det metoden gör är att skriva ut en
textrad “Detta är min första metod!“. - När programmet körs, kallar vi på metoden tre gånger.
- Alltså kommer vi få utskriften tre gånger:
Detta är min första metod!
Detta är min första metod!
Detta är min första metod!Metoder - Skapa
- När man skapar en metod behöver man ange eventuella inparametrar, samt om metoden ska returnera några värden. Vi kan designa vår metod på flera olika sätt:

- Det vill säga, vi behöver ange två saker när vi skapar metoden:
- Antal inparametrar
- Vad metoden ska returnera
- Vi kommer även behöva ange vilken datatyp vi returnerar, samt datatyp på eventuella inparametrar.
Metoder - Inparametrar
- public static – är den så kallade modifieraren, som avgör synligheten för metoden.
- int – specificerar vilken datatyp som metoden ska skicka tillbaka (returnera). Om ingen datatyp ska returnera anger man det reserverade ordet void. I detta fallet returnerar vi en int, men vi skulle lika gärna kunna returnera en annan datatyp, så som double, string eller float.
- namn – är namnet på metoden. Alla metoder måste ha ett namn och praxis är att namnet alltid skrivs med liten bokstav.
public static int namn(int a, String b) {
// Här skrivs det som ska hända i metoden
return a; // Metoden avslutas med return
}Metoder - Inparametrar
- (int a, String b) – innanför parenteserna anger man vad man vill skicka in i metoden. I detta fall skickar vi in en int som vi har gett namnet a, samt en String som vi gett namnet b. Det går att skicka in hur många värden som helst i en metod, det är bara att fylla på inom parentesen med ett kommatecken “,” mellan varje inparameter. Om man lämnar parentesen tom, skickar man inte in något värde till metoden.
public static int namn(int a, String b) {
// Här skrivs det som ska hända i metoden
return a; // Metoden avslutas med return
}Metoder - Inparametrar
- Return – Vad vi vill skicka ut från metoden: return – Alla metoder (förutom de som specificeras med void), måste returnera ett värde.
- Det är return som anger vad vi skickar ut ur metoden. I detta fall skickar man ut värdet a. Det som vi vill returnera, måste vara detsamma som den datatyp som är specificerad när vi skapade metoden, i detta fall en int.
- Det skulle alltså inte gå att returnera värdet b, eftersom b är av datatypen String och vi har angett att det är en int som metoden ska returnera.
- En metod slutar alltid direkt efter att return har blivit körts. Det är alltså alltid det sista som händer i en metod.
public static int namn(int a, String b) {
// Här skrivs det som ska hända i metoden
return a; // Metoden avslutas med return
}Metoder - Anropa
- När man vill använda en metod så anropar man den.
- Om metoden returnerar ett värde, kan man direkt tilldela detta värdet till en variabel när man kallar på metoden.
- Hur anropar man en metod: När man använder en metod, säger man att man anropar den.
- Alla metoder har ett namn som man använder när man anropar metoden.
- Inom parantes ( ) anger man de inparametrar som är definerade för metoden.
- Man måste ange inparametrar om metoden kräver det.
- Om metoden returnerar ett värde, kan man tilldela detta till en variabel av samma datatyp.
Metoder - Anropa
- Nedan har vi skapat en metod som heter min_metod.
- Vi har angett att metoden ska returnera en int och ha två inparametrar (tal1 och tal2) av typen int.
- Det metoden gör är att utföra en multiplikation mellan tal1 och tal2 och sedan returnera värdet
public static int min_metod(int tal, int tal2){
return tal1 * tal2;
}
Vi kan nu anropa metoden med dess metodnamn:
int a = min_metod(5, 4);Metoder - Anropa
- Vi skapa en variabel av typen int som heter a.
- Variabeln a kommer tilldelas värdet som returneras från metoden.
- Vi skickar in värdet 5 och 4 till metoden där variabeln tal1 kommer få värdet 5 och variabeln tal2 kommer bli 4.
- Inparametrarna till metoden blir tilldelade i samma ordning som man specificerar dem när man skapar metoden, alltså tal1 respektive tal2 i detta fall.
- Metoden returnerar multiplikationen mellan tal1 och tal2.
- Skriver vi ut värdet på a, kommer vi alltså få utskriften 20.
int a = min_metod(5, 4);Metoder - Anropa
Vi testar några fler fall
int a = min_metod(5, 4); // tal1 = 5, tal2 = 4
int b = min_metod(3, 2); // tal1 = 3, tal2 = 2
int c = min_metod(1, 8); // tal1 = 1, tal2 = 8Skriver vi ut variablerna får vi
System.out.println(a);
System.out.println(b);
System.out.println(c);Vilket resulterar i
20
6
8Metoder - Exempel
- Vi ska nu testa skapa flera olika metoder i Java och sedan anropa dessa.
- Vi ska programmera en räknare som håller reda på hur många personer det är inne i en butik.
- I exemplet använder vi klassen scanner för att ta emot inputs.
- Vi börjar med en väldigt enkel metod, det enda den ska göra är att lägga till en person
//Denna metod har som enda uppgift att öka variabeln nmbrOfPeople med ett
public static void increaseValue(){
nmbrOfPeople++; //Ökar variabeln nmbrOfPeople med ett
}Metoder - Exempel
- På motsvarande sätt skapar vi en metod som ska ta bort en person
public static void decreaseValue(){ //Denna metod har som enda uppgift att minska variabeln nmbrOfPeople med ett
nmbrOfPeople--; //Minskar variabeln nmbrOfPeople med ett
}- Vi vill även ha metod som returnerar värdet på nmbrOfPeople
public static int getNmbrOfPeople(){ //Denna metoden returnerar värdet på nmbrOfPeople. Detta specificeras med "int"
return nmbrOfPeople; //Returnerar värdet nmbrOfPeople
}- Lägg till Scanner klassen längst upp
import java.util.Scanner; //Importerar klassen scannerMetoder - Exempel
- Vi skriver även en metod som ger uppmaningar till användaren. Skriver användaren “ÖKA” så ska antal personer i butiken öka, om användaren skriver “SÄNK” så ska programmet sänka antal personer i butiken med ett.
public static String getInputsFromScanner() { //Denna metod returnerar det användaren skriver in. I detta fall returneras en String
String name; //Deklarerar en variabel som heter name
System.out.println("Skriva ÖKA om du vill öka antal " + //Skriver ut en uppmaning till användaren
"personer, skriv SÄNK om du vill minska antal personer");
Scanner input = new Scanner(System.in); // Scanner tar in värdet från användaren
name = input.nextLine(); //Värdet sparas i variabeln name
return name; //Metoden returnerar variabeln name
}Metoder - Exempel
- Lägg till while loop där vi frågar användaren om den vill öka eller minska.
- Den skriver även ut hur antalet också.
while(true) { //Denna whileloopen kommer att köras för evigt!
String str = getInputsFromScanner(); //Metoden getInputsFromScanner returnerar värdet på det användaren skriver in och sparar detta i str
if (str.equals("ÖKA")) { //Om användaren skrev "ÖKA" så ska metoden increaseValue köras
increaseValue();
}
else if (str.equals("SÄNK")){ //Om användaren skrev "SÄNK" så ska metoden decreaseValue köras
decreaseValue();
}
System.out.println("Antal personer är nu: " + getNmbrOfPeople()); //Slutligen skriver vi ut antal personer i butiken
}
Lägg koden i main
Metoder - Exempel
- Vi har alltså använt oss av flera olika metoder för att skapa ett fullt program.
- Små byggstenar skapar tillsammans stora program!
- Gör därför dina metoder så generella och användbara som möjligt så att du kan återanvända dem så många gånger som möjligt.
21. GUI
GUI - Graphic User Interface
- Graphic User Interface (GUI)
- Du behöver inte skriva ut allt till ett terminalfönster i Java.
- Vi kommer du att skriva ett kalkylprogram som använder formulär.
- Formuläret har knappar
och en textruta. - Vi börjar med en mycket
enkel kalkylator som bara
kan lägga till och sedan utöka
dess kapacitet så att den kan
subtrahera, dela och
multiplicera.

GUI - Graphic User Interface
- Vi ska börja med installera ett bibliotek som göra att vi kan skapa gränssnitt i Eclipse
- I Eclipse välj
- "help" och sen
"Eclipse Marketplace"

GUI - Graphic User Interface
- Sök efter "Swing"
- WindowBuilder
- Tryck på "Install"
(Efter som jag redan installerat det så står det Installed)
- Vänta på att det ska installera klart

Miniräknare - Skapa Projekt
- Skapa ett java-projekt, projektnamn: MyCalculator.
- Höger klicka på projektet och välj "new" sen "Other..."
- Sök efter Swing och välj "Application Window"
- Spara som "MyCal"




GUI - Miniräknare
- Klicka fliken "design"
- Klicka på "Absolute Layout" gör så att det går lättar att lägga till knappar och m.m.
- Klicka en gång på arbetsytan.

GUI - Miniräknare
- Om vi provar att köra applikationen nu så får man upp ett fönster.

GUI - Miniräknare
- Nu ska vi lägga till en textbox.
- Klicka JTextField under Components
- Klicka sedan på arbetsfältet.
- Bytt namnet till txtDisplay.
txt som textBox




1.
2.
3.
4.
GUI - Miniräknare
- Nu är det dax att lägga till knappar.
- Tryck på JButton och sen på arbetsfältet.
- Ändra namn och text på knappen.
- Varible: btnOne (Namnet på knappen)
- text: 1 (Text på knappen)
- Ändra storleken på knappen - width: 50 och height: 30
- Ändra även till bold



GUI - Miniräknare
- Lägg till flera knappar och döp dom enligt listan.
- Använd x och y för att positionering



Miniräknare - Knapp 1
- Nu ska vi börja koda.
- Dubbel klicka på knappen 1 i designläget.
- Nu skapas det en ActionListener för knapp 1.
- Det är i public void actionPerformed(ActionEvent e) {} som vi ska skriva vår kod.

Miniräknare - Knapp 1
- Skriv in koden i knapp 1
Hämtar texten som finns i btnOne alltså "1"
Skriver ut btnOneText i txtDisplay - textrutan på sidan
Prova applikationen och tryck på knapp 1
Funkar men det går bara att skivar en etta.
Men det fixar vi på nästa slide.

Miniräknare - Knapp 1
- Vi gör så att den först hämtar det som finns i textrutan och plussar på knappens värde.
- Fortsätt att göra samma sak för resten av nummer kapparna. 2 till 0


Miniräknare - Global variabel
- Vi behöver två variabler där vi spara talen som ska plussas ihop.
- Skapa två double total1 och total2 nästan längst upp i koden.
- Efter som vi lägger dom här så blir dom globala variabler

Miniräknare - Knapp +
- Dubbel klicka på plus-knappen.
- Lägg till enligt bilden
Double.parseDouble - gör om text till double

Tömmer displayen
Miniräknare - Knapp =
- Dubble klicka på knappen =
- Nu ska vi plussa ihop total1 och total2.
- Och Skriva ut svaret.

Här plussa total1 med det som finns i displayen
Skriver ut svaret total2
Nollställer total1.
Miniräknare - Knapp Clear
- Dubble klicka på knappen Clear

Nollställer total2.
Tömmer displayen
Miniräknare - mera knappar
- Nu lägger vi till mer knappar

Miniräknare - mera knappar
- Vi lägger till en global variabel math_operator.


Sen skapar vi en metod som vi sen kan anropa från knapparna (+ - / *)
Miniräknare - knapp +
- Vi byter ut koden i plus knappen så att den anropa metoden getOperator()

getText(); hämtar text från kanppen
Gör nu samma på knapparna på (- * /)
Miniräknare - knapp =
- När vi körde metoden getOperator() så sparade vi vilken knapp vi tryckte på.
- Vi använder oss av en case i knappen =

Koden ska ligga i knappen =
Lägg till i
knappen =
Kommentera bort
Miniräknare - knapp .
- Sist så fixar vi till knappen .
- Dubbel klicka på knappen(komma till koden).
- Och lägg till koden i knappen .

Programmering 1 - Java
By Håkan Brorson
Programmering 1 - Java
En kurs på Lars Kaggskolan av Håkan Brorson
- 1,173