Håkan Brorson
Bläddra neråt
https://www.oracle.com/technetwork/java/javase/downloads/index.html
Tryck på JDK Download
Tryck på jdk-15.0.2_osx-x64_bin.dmg
Dubbel klicka och installera JAVA
Tryck på Download
Dubbel klicka
Dubbel klicka
Klicka på "Öppna"
Välj
Eclips IDE for java Developers
&
klicka installera
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
Få exempel när du skriver kod.
| 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 |
Microscope and calculator, 1952
Commodore 64
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
public static void main(String[] args) {
System.out.println("Hello World");
}public static void main(String[] args) {
System.out.println("Hello World");
}Observera stor bokstav på system och semikolonet vid slutet av kommandot.
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
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);
}| 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 |
| 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 |
boolean user = true;
boolean password = false;int mittTal1;
double mittTal2;
String minString;mittTal1 = 4;
mittTal2=13.5;
minString = "Hej Svejs";Notera att vi använder tecknet " för att visa var text börjar och var text slutar.
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
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)
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 );
int a = 2;
double x = a;int num = 8 + 7.0;double a = 10.8;
int num = (int) a; // double (64 bit) --> int (32 bit)int num = 8 + (int)7.0;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);| 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 |
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 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 = 4// 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?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
}
}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
}
}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
}
}import java.util.Scanner;
import java.util.Scanner; // Importera klassen scanner
Scanner input = new Scanner(System.in);// Skapa ett scanner-objekt som hanterar inputExempel på nästa slide
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));
}
}| 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(); |
| 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) | || |
| 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 |
if (logiskt uttryck) {
Operation/Operationer …
}Exempel på nästa slide
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");
}
}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!"
}int num = 100;
if(num > 0 && num < 200){
System.out.println("Number: " + num);
}if (logiskt uttryck) {
Operation/Operationer …
} else {
Operation/operationer …
}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")
}Exempel - else-satsen
Kod på nästa slide
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);if (logiskt uttryck) {
Operation/Operationer …
} else if (logiskt uttryck) {
Operation/Operationer …
} else {
Operation/Operationer …
}Kod
nästa
slide
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 (uttryck) {
case 1:
Operation/operationer
break;
case 2:
Operation/operationer
break;
case 3:
Operation/operationer
break;
.
.
.
default:
Operation/operationer
break;
}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");
}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);En loop kan illustrera med hjälp av flödesschemat
while (villkor) {
operation / operationer
}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 {
operation / operationer
} while (villkor);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 (initialvärde; villkor; förändring){
operation / operationer
}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.
} 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.
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).
if(tal<10)
tal=10;
if(tal<10)
tal=1;
else
tal=tal/10;
do{
System.out.print(tal);
tal++;
}while(tal<10);while(tal<10){
System.out.print(tal);
tal++;
}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.
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.
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%");
}
}
}
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:
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)
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å.
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
if(figure == 0)
{
g.setColor(Color.black);
g.drawRect(150,200,40,40);
// drawRect får alltså inte skrivas fler gånger...
}
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.
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
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};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.
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
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.
Ett sätt att deklarera (skapa) en array i Java är med följande syntax:
datatyp[] namn = new datatyp[ antal element ];int[] field = new int[4];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
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
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};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.
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.
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 ett enkelt exempel där vi loopar igenom ett fält som innehåller fyra namn.
String[] names = {"Jonas", "Lisa", "Gustav", "Elin"};for (String val : names) {
System.out.println("Hej " + val);
}Utskrift:
Hej Jonas
Hej Lisa
Hej Gustav
Hej ElinNu 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};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
Exempel på nästa slide
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");
}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.
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.
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.
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:
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 …
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:
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:
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.
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 ];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 = 105int[][] twoField2 = {{2, 3},
{34, 56},
{44, 654, 43},
{2, 3, 23, 44}};twoField2[1][2] = 15;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
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>();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>();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);listEx.add(Z,X);listEx.remove(Z);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 XFler 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 -1Om 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
}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
}
}Detta är min första metod!
Detta är min första metod!
Detta är min första 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
}public static int namn(int a, String b) {
// Här skrivs det som ska hända i metoden
return a; // Metoden avslutas med return
}public static int namn(int a, String b) {
// Här skrivs det som ska hända i metoden
return a; // Metoden avslutas med return
}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);int a = min_metod(5, 4);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
8 //Denna metod har som enda uppgift att öka variabeln nmbrOfPeople med ett
public static void increaseValue(){
nmbrOfPeople++; //Ökar variabeln nmbrOfPeople med ett
}public static void decreaseValue(){ //Denna metod har som enda uppgift att minska variabeln nmbrOfPeople med ett
nmbrOfPeople--; //Minskar variabeln nmbrOfPeople med ett
}public static int getNmbrOfPeople(){ //Denna metoden returnerar värdet på nmbrOfPeople. Detta specificeras med "int"
return nmbrOfPeople; //Returnerar värdet nmbrOfPeople
}import java.util.Scanner; //Importerar klassen scannerpublic 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
}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
1.
2.
3.
4.
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.
Double.parseDouble - gör om text till double
Tömmer displayen
Här plussa total1 med det som finns i displayen
Skriver ut svaret total2
Nollställer total1.
Nollställer total2.
Tömmer displayen
Sen skapar vi en metod som vi sen kan anropa från knapparna (+ - / *)
getText(); hämtar text från kanppen
Gör nu samma på knapparna på (- * /)
Koden ska ligga i knappen =
Lägg till i
knappen =
Kommentera bort