Du er ikke logget inn. Så lenge du ikke er logget inn går du glipp av muligheten for å holde styr på din egen progresjon.

Filtrering:

2.02: Utskrift med metode

Navn: Utskrift.java

a) Skriv en metode som tar i mot en streng, og skriver denne ut i terminalen. Metodesignaturen skal se slik ut:

public static void utskrift(String tekst);

b) Skriv en metode som tar i mot et heltall, og skriver ut denne i terminalen. Kan metodene nå hete det samme?

c) Endre metoden fra b slik at vi tar i mot to heltall og plusser dem sammen. Skriv så ut resultatet til terminalen.

class Utskrift {

  public static void main(String[] args) {
    String enTekst = "Her er en tekst";
    int tall1 = 2;
    int tall2 = 5;

    utskrift(enTekst);
    utskrift(tall1);
    utskrift(tall1, tall2);
  }

    // Oppgave a
    public static void utskrift(String tekst) {
        System.out.println("Tekst: " + tekst);
    }

    // Oppgave b
    public static void utskrift(int tall){
      System.out.println("Tall: " + tall);
    }

    // Oppgave c
    public static void utskrift(int tall1, int tall2) {
        System.out.println("Sum av tallene: " + (tall1 + tall2));
    }
}

3.01: While-løkke med teller

Filnavn: Lokker.java

a) Skriv et program som inneholder klassen "Lokker"
b) Lag en while-løkke som teller fra 0 til 10. Hint: while(....)
c) Legg til en printing av telleren du bruker slik at det blir en printing for hver gang løkken kjører.

Forventet utskrift:

0
1
2
3
4
5
6
7
8
9
class Lokker {
    public static void main(String[] args) {
        int teller = 0;

        while(teller < 10) {
            System.out.println(teller);
            teller = teller + 1;
        }
    }
}

3.03: Heltallsarray og løkke.

Navn: Heltallsarray.java

a) Lag fem heltallsvariable som inneholer verdiene 0,1,2,3,4.
b) Skriv ut variablene.
c) Lag en heltallsarray som kan inneholde 5 tall.
d) Legg verdiene dine inn i arrayen ved hjelp av en løkke.
e) Skriv ut variablene i arrayen ved hjelp av en løkke.

class Heltallsarray{
    public static void main(String [] args){
        int tall1 = 0;
        int tall2 = 1;
        int tall3 = 2;
        int tall4 = 3;
        int tall5 = 4; 

        System.out.println("Utskrift av variable:");
        System.out.println("tall1 = " + tall1);
        System.out.println("tall2 = " + tall2);
        System.out.println("tall3 = " + tall3);
        System.out.println("tall4 = " + tall4);
        System.out.println("tall5 = " + tall5);

        int array [] = new int [5];

        int lengdePaaArray = array.length;
        int teller = 0; 
        while(teller < lengdePaaArray){
            array[teller] = teller;
            teller++;
        }

        teller = 0;
        System.out.println("Utskrift av array:");
        while(teller < lengdePaaArray){
            System.out.println("array[" + teller + "] = " + array[teller]);
            teller++;
        }
    }
}

3.04: String-array

Navn: StringArray.java

a) Lag en array som inneholder tekststrenger.
b) Lag en løkke som går like mange ganger som arrayen er lang. (Hint: Bruk en teller i en løkke)
c) Les inn tekst fra brukeren og lagre det i arrayen. (Hint: bruk løkken fra b og telleren for å vite neste ledige posisjon i arrayen)
d) Skriv ut arryaen.

import java.util.Scanner;

class StringArray {
    public static void main(String[] args) {
        String[] array = new String[5];
        int teller = 0;
        Scanner tastatur = new Scanner(System.in);

        System.out.println("Skriv inn fem ord:");
        while(teller < array.length) {
            array[teller] = tastatur.nextLine();
            teller++;
        }

        teller = 0;
        System.out.println("Tastede ord:");
        while(teller < array.length) {
            System.out.println(array[teller]);
            teller++;
        }
    }
}

3.06: Tall-array med while-løkke

Navn: Tallarray.java

a) Lag et program med en while-løkke som ber bruker taste inn fem heltall og lagrer disse i en array kalt tall:

int[] tall = new int[5];

b) Sum av array: Utvid programmet slik at det regner ut summen av tallene ved hjelp av en løkke, og skriver ut resultatet.
c) Lave verdier: Legg til programkode som skriver ut alle verdiene i arrayen som er mindre enn 10.
d) Søk: Legg til programkode som skriver ut en beskjed om verdien 5 finnes eller ikke finnes i arrayen.

import java.util.Scanner;

class Tallarray {
    public static void main(String[] args) {
        // Oppgave A

        int[] tall = new int[5];
        Scanner tastatur = new Scanner(System.in);
        int teller = 0;

        while(teller < 5) {
            System.out.println("Tast tall:");
            tall[teller] = Integer.parseInt(tastatur.nextLine());
            teller++;
        }

        // Oppgave B

        int sum = 0;
        teller = 0;

        while(teller < 5) {
            sum += tall[teller];
            teller++;
        }

        System.out.println("Summen av tallene er: " + sum);

        // Oppgave C

        teller = 0;

        System.out.println("Lave tall:");
        while(teller < 5) {
            if(tall[teller] < 10) {
                System.out.println(tall[teller]);
            }
            teller++;
        }

        // Oppgave D

        boolean finnesFem = false;
        teller = 0;

        while(teller < 5) {
            if(tall[teller] == 5) {
                finnesFem = true;
            }
            teller++;
        }

        if(finnesFem) {
            System.out.println("Tallet 5 finnes");
        } else {
            System.out.println("Tallet 5 finnes IKKE");
        }
    }
}

3.09: Sant eller usant om arrayer i Java.

Sant eller usant?

a) Alle elementer i en array er av samme type.
b) Array-indekser må være heltall.
c) Arrayer kan endre størrelse (bli større eller mindre avhengig av om vi trenger mer plass).
d) Arrayer kan ikke inneholde tekststrenger.
e) En metode kan ikke motta en array som parameter.

a) Sant. I en array må man spesifisere hvilken type arrayen skal være når man deklarerer den. For eksempel kan en type være int, double, String, og så videre.

b) Sant, array-indekser må være heltall.

c) Usant. Når en array først har blitt initialisert med en lengde, kan man ikke endre denne lengden. Om man trenger en lenger array, må man lage en ny en.

d) Usant. Arrayer kan inneholder tekststrenger. Arrayen må da være av typen String.

e) Usant. En metode kan motta en array som parameter. Eksempel på en metodesignatur kan være:

void jegErEnMetode(String parameterArray[]){
    <innhold i metoden>
 }

3.10: Reverser array

Navn: ReverserArray.java

Lag en heltallsarray med verdiene 1, 2, 3, 4, 5 og 6. Lag en algoritme som reverserer arrayen. Gå deretter gjennom heltallsarrayen med en while-løkke og print ut alle verdiene.

class ReverserArray{
  public static void main(String[] args) {
    int array [] = {1, 2, 3, 4, 5, 6};
    int tellerOpp = 0;
    int tellerNed = (array.length - 1);
    int halveArrayen = (array.length / 2);

    while(tellerOpp < halveArrayen){
      int midlertidig = array[tellerOpp];
      array[tellerOpp] = array[tellerNed];
      array[tellerNed] = midlertidig;

      tellerOpp++;
      tellerNed--;
    }

    System.out.println("Ny array:");

    tellerOpp = 0;
    while (tellerOpp < array.length){
      System.out.println(array[tellerOpp]);
      tellerOpp++;
    }
  }
}

3.11: Kopier array.

Navn: KopierArray.java

a) Lag en String-array som du kaller stringArray som inneholder strengene "INF1000", "INF1500" og "INF1080".

b) Deretter lag en ny String-array som du kaller nyArray med 3 plasser.

c) Kopier alle strengene fra stringArray til nyArray.

class KopierArray{
  public static void main(String[] args) {
    String stringArray [] = {"INF1000", "INF1080", "INF1500"};
    String nyArray [] = new String [3];

    int teller = 0;
    while(teller < stringArray.length){
      nyArray[teller] = stringArray[teller];
      teller++;
    }
  }
}

3.12: Kvadratet av alle tallene i en array.

Navn: KvadratetArray.java

a) Lag en heltallsarray med tallene 1, 2, 3, 4 og 5.

b) Finn kvadratet av hvert tall, og sett det inn på dens tidligere plass i arrayen.

Hint: Kvadratet av 2 finner du ved å gange 2 * 2 = 4.

class KvadratetArray{
  public static void main(String[] args) {
    int array [] = {1, 2, 3, 4, 5};
    int teller = 0;

    while(teller < array.length){
      array[teller] = array[teller] * array[teller];
      teller++;
    }
  }
}

3.13: Binærtall

Navn: Binary.java

Denne oppgaven er hentet fra Big Java: Late objects (P4.14)

Write a program that reads a number and prints all of its binary digits: Print the remainder number % 2, then replace the number with number / 2. Keep going until the number is 0. For example, if the user provides the input 13, the output should be

1
0
1
1
class Binary {
    public static void main(String[] args) {
        int number = 13;

        while(number > 0) {
            System.out.println(number % 2);
            number = number / 2;
        }
    }
}

3.15: Finn antall forekomster av en streng.

Navn: FinnAntall.java

a) Lag en String-array stasjoner med følgende verdier: "blindern", "Bislett", "Forskningsparken", "JERNBANETORGET", "toyen", "Jernbanetorget" og "forskningsparken".

b) Lag en void-metode der du får inn en String og en String-array som parameter. Du skal lage en metode sjekker hvor mange ganger strengen forekommer i arrayen. Antall forekomster skal printes ut. Også strenger med ulik bruk av små og store bokstaver skal regnes som like. Metodesignaturen skal se slik ut:

static void antallForekomster(String tekst, String [] array)

Hint: Metoden .equalsIgnoreCase() ignorerer små og store bokstaver.

class FinnAntall{
  public static void main(String[] args) {
    String [] stasjoner = {"blindern", "Bislett", "Forskningsparken",
    "JERNBANETORGET", "toyen", "Jernbanetorget", "forskningsparken"};

    //Testing
    antallForekomster("Forskningsparken", stasjoner);
    antallForekomster("Toyen", stasjoner);


  }

  static void antallForekomster(String tekst, String [] array){
    int antallForekomster = 0;
    int teller = 0;
    while(teller < array.length){
      if(array[teller].equalsIgnoreCase(tekst)){
        antallForekomster++;
      }
      teller++;
    }
    System.out.println(tekst + " forekommer " + antallForekomster + " ganger");
  }
}

3.16 Kodeflyt 2

Forklar programflyten i dette programmet:

Tips: Metoden .equalsIgnoreCase() fungerer nesten som .equals(), men bryr seg ikke om forskjellen på store og små bokstaver.

import java.util.Scanner;
class Kodeflyt2 {
    public static void main(String[]args) {
        Scanner tastatur = new Scanner (System.in);

        System.out.println("Tast inn et tall:");
        int i= Integer.parseInt(tastatur.nextLine());

        System.out.println("Pen utskrift?");
        String s = tastatur.nextLine();

        kvadrat(i, s);
    }

    public static void kvadrat(int a, String ut) {
        int svar = a*a;

        if (ut.equalsIgnoreCase("ja")) {
            System.out.println("Kvadratet av " + a + " er " + svar + ".");
        }
        else
        {
            System.out.println(svar);
        }
    }
}

Main-metoden starter og vi oppretter et Scanner-objekt.

Programmet ber bruker om input. Brukeren taster inn input, og programmet tolker denne som en heltall.

Programmet ber bruker om input igjen, og bruker taster inn ny input i form av en tekststreng.

Deretter kalles metoden kvadrat() med variablene vi har hentet fra bruker som parametre.

Metoden kvadrat begynner med å regne ut kvadratet av det første parametret og lagre resultatet i en ny variabel.

Deretter sjekker programmet verdien av det andre parametret. Dersom denne verdien tilsvarer "ja", "Ja", "jA" eller "JA" vil programmet gjennomføre det som står i if-blokken, dvs. skrive ut resultatet som en del av en setning.

Hvis ikke går vi til else-blokken og skriver bare ut resultatet. Deretter er programmet ferdig.

P3.18: Test-cases

Gjør oppgave P3:18 fra Big Java: Late Objects (side 128 i 2012-versjonen).
Skriv deretter test-cases som dekker alle grenene i de oppgitte if-testene.

Hint: Sitter du fast, forsøk først å løse oppgave R3.9 og R3.10 (side 123).

R3.9 og R3.10: Kodeflyt og test-cases

Løs oppgave R3.9 og R3.10 fra Big Java: Late Objects (side 123 i 2012-utgaven).