Detta är den programkod vi skrev -- anteckningarna är gjorda bara för att vara ett stöd för minnet för dem som var där, och därför inte nödvändigtvis fullständiga eller ens sammanhängande. Betydligt mer hjälp finns att hämta i kompendiet.
OH-bilder finns här.
class NbrOfRolls { public static void main(String[] args) { new NbrOfRolls().run(); } void run() { int limit = 35; // gör att vi kan variera gränsen... Die die = new Die(); for (int k = 1; k <= 10; k = k + 1) { int sum = 0; int count = 0; while (sum <= limit) { die.roll(); sum = sum + die.getNbrOfSpots(); count = count + 1; } System.out.print("Det behövdes "); System.out.print(count); System.out.println(" kast"); } } }
Vi började här med att lösa flera uppgifter i tät följd:
När vi var färdiga hade vi löst problemet att skriva ut uttrycket 1 + 2 * b, där b är det största av två inlästa värden.
class Functions1 { public static void main(String[] args) { new Functions1().run(); } void run() { System.out.println("Detta program skriver ut kuben på"); System.out.println("uttrycket 1 + 2 * b, där b är det"); System.out.println("största av två inlästa värden x och y"); double x = Keyboard.nextDouble("Ange x: "); double y = Keyboard.nextDouble("Ange y: "); System.out.print("Det största värdet är "); System.out.println(max(x, y)); System.out.println(cube(1 + 2 * max(x, y))); } double max(double a, double b) { if (a > b) { return a; } return b; } double cube(double value) { return value * square(value); } double square(double value) { return value * value; } }
class Functions2 { public static void main(String[] args) { new Functions2().run(); } void run() { System.out.println(sum(100)); System.out.println(sum(1000)); System.out.println(sum(10000)); System.out.println(sum(100) + sum(2000)); } int sum(int n) { int sum = 0; for (int term = 1; term <= n; term++) { sum += term; } return sum; } }
class Dice { public static void main(String[] args) { new Dice().run(); } void run() { Die d1 = new Die(); d1.roll(); printDie(d1); d1.roll(); printDie(d1); Die d2 = new Die(); d2.roll(); printDie(d2); printDice(d1, d2); } void printDice(Die die1, Die die2) { System.out.print("Den första tärningen visar "); System.out.print(die1.getNbrOfSpots()); System.out.print(", den andra visar "); System.out.println(die2.getNbrOfSpots()); } void printDie(Die die) { System.out.print("Tärningen visar "); System.out.print(die.getNbrOfSpots()); System.out.println(" prickar"); } }
Vi pratade lite om olika heltalstyper och heltalsoperationer, varpå jag visade ett fel som inte är helt ovanligt:
int k = 1; System.out.println(k++); System.out.println(k); k = k++; // ouch -- inget händer med k System.out.println(k);
class Divisors { public static void main(String[] args) { new Divisors().run(); } void run() { int n = Keyboard.nextInt("Ange ett tal: "); System.out.print("Talet är delbart med: "); printDivisors(n); System.out.println(); } void printDivisors(int value) { for (int k = 1; k <= value; k++) { if (value % k == 0) { System.out.print(k); System.out.print(" "); } } } }
class DigitSums { public static void main(String[] args) { new DigitSums().run(); } void run() { int n = Keyboard.nextInt("Ange ett tal: "); System.out.print("Siffersumman är "); System.out.println(digitSum(Math.abs(n))); } int digitSum(int value) { int sum = 0; while (value > 0) { sum += value % 10; value /= 10; } return sum; } }
Detta exempel skulle bara illustrera att vi bör räkna med att reella tal är inexakta:
class StrangeValues { public static void main(String[] args) { new StrangeValues().run(); } void run() { for (double x = 0.0; x <= 1.0; x += 0.1) { System.out.println(x); } } }
Programmet ger utskriften
$ java StrangeValues 0.0 0.1 0.2 0.30000000000000004 0.4 0.5 0.6 0.7 0.7999999999999999 0.8999999999999999 0.9999999999999999
class BooleanFunctions { public static void main(String[] args) { new BooleanFunctions().run(); } void run() { int n = Keyboard.nextInt("Ange tal: "); if (isOdd(n)) { System.out.println("udda"); } else { System.out.println("jämnt"); } } boolean isOdd(int value) { if (value % 2 != 0) { return true; } return false; } }
class Primes { public static void main(String[] args) { new Primes().run(); } void run() { printPrimes(1, 100); printPrimes(100, 200); printPrimes(1500, 1800); } void printPrimes(int min, int max) { for (int k = min; k <= max; k++) { if (isPrime(k)) { System.out.print(k); System.out.print(" "); } } System.out.println(); } boolean isPrime(int value) { if (value < 2) { return false; } for (int k = 2; k < value; k++) { if (value % k == 0) { return false; } } return true; } }