Enkla typer

Följande klass skapar ett antal variabler av olika typer, och skriver sedan ut några av dem.

public class SimpleTypes { public static void main(String[] args) { int a = 15; int b = 4; int c = a / b; System.out.println(c); double x = 15; double y = 4; double z = x / y; System.out.println(z); boolean p = true; boolean q = false; boolean r = p && (q || q); boolean s = (p && p) || q; System.out.println(r); System.out.println(s); } }

  1. Vad skriver programmet ut?
  2. Vad heter filen som ovanstående kod är tagen från?
     
 

Villkorssatser

Följande program utför ett antal villkorssatser (if-satser). Beroende på hur dessa satser utvärderas skrivs olika saker ut.

public class If { public static void main(String[] args) { int a = 100; int b = 400; if (a < b) { System.out.println(a + " < " + b); } else { System.out.println("Algol inte sämre än Basic"); } if (a > b) { System.out.println(a + " > " + b); } else { System.out.println("a=" + a + ", b=" + b + ", a > b = false"); } if (a != b) { System.out.println(a + " != " + b); } else { System.out.println(a + " == " + b); } } }

  1. Vad heter filen som ovanstående kod är tagen från?
     
  2. Vad skriver programmet ut?
 

Vektorer och Loopar

public class Loop { public static void main(String[] args) { String suffix = "ur"; String[] icelandic = new String[args.length]; for (int i = 0; i < args.length; i++) { System.out.println(args[i]); icelandic[i] = args[i] + suffix; } System.out.println(); for (int i = 0; i < icelandic.length; i++) { System.out.println(icelandic[i]); } System.out.println(); String[] newArgs = prependString(args, "first"); for (int i = 0; i < newArgs.length; i++) { System.out.println(newArgs[i]); } } public static String[] prependString(String[] strings, String s) { String[] newStrings = new String[strings.length + 1]; newStrings[0] = s; for (int i = 0; i < strings.length; i++) { newStrings[i + 1] = strings[i]; } return newStrings; } }

 
  1. Givet att vi kör programmet enligt följande:
    $ java Loop ett två tre
    vad skriv ut?
  2. Titta närmare på nedanstående rad.
    public static String[] prependString(String[] strings, String s) {
    Identifiera (ringa in ovan) vad som svarar mot följande termer:
    1. Returtyp
    2. Metodnamn
    3. Argumentlista
    Hur skulle du läsa ut returtypen på svenska (techno-anglifierad svenska går också bra)?
 

Listor och mängder

import java.util.List; import java.util.Set; import java.util.ArrayList; import java.util.HashSet; import java.util.Scanner; public class ListSet { private List list; private Set set; public ListSet() { list = new ArrayList(); set = new HashSet(); } public void addToken(String token) { list.add(token); set.add(token); } public void addTokens(Scanner s) { while (s.hasNext()) { addToken(s.next()); } } public void summarize() { System.out.println(set.size() + " / " + list.size()); // System.out.println(set.size() / list.size()); System.out.println((double)set.size() / list.size()); } }

import java.util.Scanner; public class ListSetTest { public static void main(String[] args) { ListSet ls = new ListSet(); ls.addTokens(new Scanner(System.in)); ls.summarize(); } }

 
  1. Givet att vi kör programmet ListSetTest och matar följande till standard input:
    Får får får ? Nej får får inte får . Får får lamm .
    Vad skrivs ut?
  2. Om du skulle vilja använda LinkedList istället för ArrayList, vilka förändringar skulle du behöva göra? (Svara genom att ändra i programlistningarna ovan.)
  3. Om du vill spara in på antalet rader i ListSet, hur skulle du kunna omformulera import-satserna så att de sammantaget tar upp färre rader?