Lösningar till tentamen, del A 2017-12-16 // Uppgift 1a Rätt alternativ är c eftersom instansvariabeln list har värdet null. // Uppgift 1b Utskrift: lika olika s1, s2 och s3 är referenser till String-objekt och det är referenserna som jämförs i if-satserna, inte det de refererar till. I det första fallet tilldelas referensen s1 till referensen s2. Dessa referenser är således lika. I det andra fallet skapas först ett nytt String-objekt som referar till texten "hej". Därefter skapas ytterligare ett nytt String-objekt som kommer att referera till texten "HEJ". Referensen till detta objekt tilldelas till s3, som alltså refererar till ett annat String-objekt än s1. // Uppgift 1c public class Lag { private String namn; private int antal; private int plus; private int minus; private int poäng; public Lag(String namn) { this.namn=namn; } @Override public String toString() { return namn + "\t" + antal + "\t" + plus + "\t" + minus + "\t" + poäng; } public void nyMatch(int gjorda, int insläppta) { antal++; if (gjorda > insläppta) poäng +=3; else if (gjorda == insläppta) poäng++; plus += gjorda; minus += insläppta; } } // Uppgift 2 import javax.swing.*; import java.util.*; class RelPrimProg { public static boolean relPrim(int i, int j) { for (int k=2; k<=i && k<=j; k++) if (i%k == 0 && j%k == 0) return false; return true; } public static void main(String arg[]) { while(true) { String s = JOptionPane.showInputDialog("Ange två heltal"); if (s == null) break; Scanner sc = new Scanner(s); int a = sc.nextInt(), b = sc.nextInt(); if (relPrim(a,b)) JOptionPane.showMessageDialog(null, "Relativa primtal"); else JOptionPane.showMessageDialog(null, "Inte relativa primtal"); } } } // Uppgift 3 import java.io.*; import java.util.*; public class Wc { public static void main(String[] arg) throws IOException { if (arg.length != 1) { System.out.println("Illegal argument"); System.exit(1); } BufferedReader f = null; try { f = new BufferedReader(new FileReader(arg[0])); } catch (FileNotFoundException e) { System.out.println("Cannot open " + arg[0]); System.exit(1); } int antTeck=0, antOrd=0, antRad=0; String rad; while ((rad = f.readLine()) != null) { antRad++; antTeck += rad.length() + 1; // Unix Scanner sc = new Scanner(rad); while (sc.hasNext()) { antOrd++; sc.next(); } } f.close(); System.out.println(antRad + " " + antOrd + " " + antTeck + " " + arg[0]); } }