Enkel javatutorial

Avsikten med denna javatutorial är att "värma" upp kunskaperna i Java inför kursens laborationer. Övningarna är ordnade dels efter svårighetsgrad, och dels i ämnesordning. Hoppa över de övningar som du tycker verkar för lätta! De blir litet klurigare mot slutet.

Då du löser uppgifterna har du stor nytta av kapitel 1 i kursboken eller Sun's sidor med javadokumentation.

Lösningsförslag

Att skriva, kompilera och köra en javaapplikation

1. Pröva att skriva in följande program i en fil "Hello.java":

   class Hello {
     public static void main (String[] args) {
       System.out.println ("Hello World!");
     }
   }

Gå till terminalfönstret och se till att du står i samma katalog som filen "Hello.java". Kompilera (dvs översätt programmet till Java-bytekoder) genom att skriva

javac Hello.java

Kör programmet med

java Hello

Variabel

2. Skriv en javaapplikation som räknar fram och skriver ut (2 + 2) ^ 2 fastän siffran 2 bara förekommer en gång i programtexten. (Tips: Använd en variabel!)

For-slinga

3. Skriv ett program som räknar fram och skriver ut summan av talen 1 till 100.

Typer

4. Vilken datatyp använde du för summeringsvariabeln i 3? Vilken typ bör du använda om du vill summera talen 1 till 100000?

5. Skriv ett program som räknar ut arean av en cirkel. Det kan tex ha följande utskrift:

Arean av en cirkel med diameter 3 cm är 9.42477796076938 cm.

Tips: Använd Math.PI

While-slinga

6. Ett sätt att räkna ut kvadratroten ur ett tal x (Newton-Raphson-metoden) är att sätta r_0 = 1.0 och sedan räkna fram "nya" r från "gamla" enligt r_k+1 = (r_k + x / r_k) / 2.0 tills | r_k+1 - r_k | < noggrannhet.

Skriv en applikation som räknar fram kvadratroten ur 2 med en noggrannhet 1e-6 (dvs 6 decimaler).

Tips: Math.abs räknar ut absolutbeloppet.

Metoder

7. Skriv en egen metod med metodhuvud

  double sqrt (double x)

mha algoritmen i övningsuppgift 4 och använd den för att räkna fram summan av kvadratrötterna av talen 1 till 100. (Ska bli c:a 671 om du räknat rätt!)

Arrayer

8. Uppgift C-1.3 i boken: Ta en vektor med heltalen 1-52 och blanda den, så att varje permutation är (ungefär) lika sannolik. Tips: Math.Random() ger ett slumptal. Kolla i javadokumentationen.

Räkning och slingor

9. Talen 31,331 och 3331 är primtal. Gäller det i allmänhet att tal på formen 33...31 är primtal? Om inte, vilket är det minsta tal för vilket det inte är sant.

Filläsning

10. Läs rader i en fil och skriv ut dem i Intel-ordning, det vill säga: rad 2, rad 1, rad 4, rad 3 (För att testa att läsa en fil...)

Använda färdig Java-klass

11. Hitta ytterligare ett tal på formen 33...31 som är primtal. Tips är att kolla i javadokumentationen på klassen BigInteger. Där kan godtyckligt stora heltal skapas, och man kan med ett enkelt metodanrop kolla om de (med största sannolikhet) är primtal. (1 - 0.5^1000 är MYCKET nära 1.)