M?l: Trening i bruk av klasser, objekter og pekere. Bruk av lokale metoder og objektvariable.
Oppgave merket med n?kkelsymbol er plukket ut som spesielt representativ for de viktigste temaene fra ukens forelesning, og alle b?r ha som minimumsm?l ? l?se denne selvstendig.
Ekstraoppgaver med repetisjon ligger her.
Oppgave 1 - Returverdier
Fyll ut returverdiene for f?lgende programmer
a)
void jegReturnererIngenting(){ }
b)
int summenAvToHeltall(){ int a = 2; int b = 3; return a + b; }
c)
double summenAvToDobule(){ double a = 2.0; double b = 3.0; return a + b; }
d)
String navnetTilBrukeren(){ In tastatur = new In(); String navn = in.inLine(); return navn; }
Oppgave 2 - String-metoder
a) Lag et program som skriver ut teksten "Agnes i senga" baklengs. Hint: Bruk en for-l?kke som teller nedover
class AgnesISenga { public static void main(String[] args){ String tekst = "Agnes i senga"; for (int i = tekst.length()-1; i >= 0; i--){ System.out.print(tekst.charAt(i)); } System.out.println(); } }
b) Modifiser programmet over slik at det f?rst gj?r om teksten til kun ? inneholde sm? bokstaver.
// Legg til dette i koden din f?r l?kken tekst = tekst.toLowerCase();
Oppgave 3 - String
Oppgaven er hentet fra Eksamen 2010. Denne kan v?re litt vanskelig, men pr?v!
a) Lag en metode som skal hete forekommer som sjekker forekomster av tegn i en tekst. Metoden skal returnere true hvis tegnet t forekommer i String-variabelen tekst, og som returnerer false ellers. Metoden du skal lage skal derfor returnere en boolean og ta inn to parametere: en character og en String.
boolean forekommer(char c, String tekst){ for (int i = 0; i < tekst.length(); i++){ if (tekst.charAt(i) == c){ return true; } } return false; }
(Hint: Det kan v?re nyttig ? bruke String-metodene public char charAt(int index) og public int length())
b) Lag deretter en metode som skal hete "utenRepetisjon" og som tar i mot en String og som fjerner alle repetisjoner av tegn i String-variabelen. For eksempel skal utenRepetisjon("aababbabbac") returnere "abc".
String utenRepetisjon(String tekst){ String resultat = ""; for (int i = 0; i < tekst.length(); i++){ if (!forekommer(tekst.charAt(i), resultat){ resultat += tekst.charAt(i); } } return resultat; }
(Hint: Bruk metoden i oppgave a.)
c) Lag en metode som heter "antallForskjellige" og som returnere antall forskjellige tegn som forekommer i en String-variabel. For eksempel skal metoden returnere 3 hvis den kalles med String-verdien "aababbabbac".
int antallForskjellige(String tekst){ String nyTekst = utenRepetisjon(tekst); return nyTekst.length(); }
(Hint: Bruk metoden i oppgave b.)
Oppgave 4 - Kopier array i en metode
a) Skriv en egen metode hvor du lager en kopi av et array best?ende av tekststrenger. Metoden sin skal ta inn et array og kopiere alle elementene over i et nytt array. Her er det ikke lov ? bruke ferdige metoder!
Forslag til array: String[] navn = {"Ole", "Dole", "Doffen", "Donald", "Dolly", "Langbein", "Pluto"};
String[] arrayKopiering(String[] original){ String[] nyArray = new String[original.length]; for (int i = 0; i < original.lenght; i++){ nyArray[i] = original[i]; } }
b) Skriv deretter ut alle elementene i begge arrayene for ? sjekke at de faktisk er like, og skriv resultatet til skjerm.
for (int i = 0; i < original.length; i++){ System.out.println("original: " + original[i]); System.out.println("nyArray: " + nyArra[i]); }
c) Lag deretter en metode som tar inn to arrayer og sjekker at alle elementene er like.
void sammenliknArray(String[] array1, String[] array2){ boolean like = true; for (int i = 0; i < original.length; i++){ if (!array1[i].equals(array2[i]){ like = false; } } if (like){ System.out.println("like"); }else{ System.out.println("Ikke like"); } }
d) Pr?v n? ? kopiere arrayen din med metoden System.arraycopy(). Er resultatet det samme?
// tar utgangspunkt i array1 og array2 fra oppgave c). // Ja! resultatet skal v?re det samme :) Pr?v! System.arraycopy(array1, 0, array2, 0, array1.length);