L&L 3.5, 5.1-5.3, 5.5, 5.7, 5.8
S kap 1.10, 1.12, 1.13
public class Avrunda { public static void main(String [] arg) { double x = 2.5; System.out.println(" x (int)x round(x) ceil(x) floor(x)"); System.out.println(" "+x+" "+(int)x+" "+Math.round(x) +" "+Math.ceil(x)+" "+Math.floor(x)); x = 1.5; System.out.println(" "+x+" "+(int)x+" "+Math.round(x) +" "+Math.ceil(x)+" "+Math.floor(x)); x = 1.4; System.out.println(" "+x+" "+(int)x+" "+Math.round(x) +" "+Math.ceil(x)+" "+Math.floor(x)); x = -1.4; System.out.printf("%4.1f%7d%8d%11.1f%10.1f\n",x, (int)x, Math.round(x), Math.ceil(x), Math.floor(x)); x = -1.5; System.out.printf("%4.1f%7d%8d%11.1f%10.1f\n",x, (int)x, Math.round(x), Math.ceil(x), Math.floor(x)); } } /* > java Avrunda x (int)x round(x) ceil(x) floor(x) 2.5 2 3 3.0 2.0 1.5 1 2 2.0 1.0 1.4 1 1 2.0 1.0 -1.4 -1 -1 -1.0 -2.0 -1.5 -1 -1 -1.0 -2.0 */
public class Funk { public static void main(String [] arg) { double värde = 2.5; System.out.println(värde + " radianer är "+ värde*180.0/Math.PI + " grader."); System.out.println("x-värde = " + värde); System.out.println("ln = " + Math.log(värde)); System.out.println("e^x = " + Math.exp(värde)); System.out.println("sin x = " + Math.sin(värde)); System.out.println("cos x = " + Math.cos(värde)); System.out.println("roten ur = " + Math.sqrt(värde)); System.out.println("x avrundat till närmaste heltal = " + Math.round(värde)); System.out.println("x avrundat till närmaste större heltal = " + Math.ceil(värde)); System.out.println("x avrundat till närmaste mindre heltal = " + Math.floor(värde)); } } /* > java Funk 2.5 radianer är 143.2394487827058 grader. x-värde = 2.5 ln = 0.9162907318741551 e^x = 12.182493960703473 sin x = 0.5984721441039564 cos x = -0.8011436155469337 roten ur = 1.5811388300841898 x avrundat till närmaste heltal = 3 x avrundat till närmaste större heltal = 3.0 x avrundat till närmaste mindre heltal = 2.0 */
import java.util.Scanner; public class Grad2 { public static void main(String [] arg) { Scanner scan = new Scanner(System.in); double a, b, c, x1, x2, d; System.out.println("Ge koeff. a, b och c: "); a = scan.nextDouble(); b = scan.nextDouble(); c = scan.nextDouble(); d = b*b - 4*a*c; if (a==0) System.out.println("Ingen andragradsekvation."); else if (d>=0) { x1 = -b/2/a + Math.sqrt(d)/2; x2 = -b/2/a - Math.sqrt(d)/2; System.out.println("Rötterna är " + x1 + " och " + x2); } else System.out.println("Rötterna är komplexa."); } } /* > javac Grad2.java > java Grad2 Ge koeff. a, b och c: 1 -3 2 Rötterna är 2.0 och 1.0 > java Grad2 Ge koeff. a, b och c: 1 2 3 Rötterna är komplexa. > java Grad2 Ge koeff. a, b och c: 0 1 2 Ingen andragradsekvation. > */
import java.util.Scanner; public class Nested { public static void main(String [] arg) { Scanner scan = new Scanner(System.in); int ålder; System.out.println("Hur gammal är personen?"); ålder = scan.nextInt(); if (ålder<7) System.out.println("Småbarn"); else if (ålder<20) System.out.println("Skolungdom"); else if (ålder<27) System.out.println("Student"); else if (ålder<65) System.out.println("Vuxen"); else System.out.println("Pensionär"); System.out.println(); System.out.println("Hur gammal är personen?"); ålder = scan.nextInt(); if (ålder<7) System.out.println("Småbarn"); if (ålder<20) System.out.println("Skolungdom"); if (ålder<27) System.out.println("Student"); if (ålder<65) System.out.println("Vuxen"); System.out.println("Pensionär"); } } /* % java Nested Hur gammal är personen? 12 Skolungdom Hur gammal är personen? 12 Skolungdom Student Vuxen Pensionär */
while
-loopen, den sk så länge som-loopen.
import java.util.Scanner; public class TalPar { public static void main(String[] arg) { Scanner scan = new Scanner(System.in); int i, j; // Läs in två tal i taget tills // något av den är = 0, // dvs så länge båda är // skilda från noll i = scan.nextInt(); j = scan.nextInt(); while (i != 0 && j != 0) { System.out.println("Du gav talen " + i + " och " + j); i = scan.nextInt(); j = scan.nextInt(); } System.out.println("Du gav talen " + i + " och " + j + " och något av dem var = 0"); // Läs in två tal i taget tills // båda är = 0, // dvs så länge något av dem är // skilt från noll i = scan.nextInt(); j = scan.nextInt(); while (i != 0 || j != 0) { System.out.println("Du gav talen " + i + " och " + j); i = scan.nextInt(); j = scan.nextInt(); } System.out.println("Du gav talen " + i + " och " + j + " och båda var = 0"); } } /* [12] % java TalPar 2 3 Du gav talen 2 och 3 1 6 Du gav talen 1 och 6 1 0 Du gav talen 1 och 0 och något av dem var = 0 2 3 Du gav talen 2 och 3 1 6 Du gav talen 1 och 6 1 0 Du gav talen 1 och 0 0 0 Du gav talen 0 och 0 och båda var = 0 */
import java.util.Scanner; public class Sgd { public static void main(String [] arg) { Scanner scan = new Scanner(System.in); boolean fortsätt = true; int m, n; String svar; System.out.println("Välkommen till Euklides algoritm!"); System.out.println("Programmet beräknar största gemensamma"); System.out.println(" divisor till så många talpar Du vill."); while (fortsätt) { System.out.println("Ange två tal: "); m = scan.nextInt(); n = scan.nextInt(); if (m<=0 || n<=0) { System.out.println("Talen måste vara positiva!"); } else { while (m != n) { if (m > n) { m -= n; } else { n -= m; } } System.out.println("SGD = " + m); } System.out.println("Vill Du fortsätta?"); System.out.println("Svara \"ja\" eller\"nej\": "); svar = scan.next(); while (!svar.equals("ja") && !svar.equals("nej")) { System.out.println("Du måste svara \"ja\" eller\"nej\": "); svar = scan.next(); } if (svar.equals("nej")) { fortsätt = false; } } System.out.println("Tack för idag!"); } } /* > java Sgd Välkommen till Euklides algoritm! Programmet beräknar största gemensamma divisor till så många talpar Du vill. Ange två tal: 34 76 SGD = 2 Vill Du fortsätta? Svara "ja" eller"nej": hej Du måste svara "ja" eller"nej": ja Ange två tal: 24 56 SGD = 8 Vill Du fortsätta? Svara "ja" eller"nej": nej Tack för idag! */
/********************************************** / / Kontrollsiffran i ett personnummer / kan räknas ut på följande sätt: / / * Multiplicera varannan av de första 9 / siffrorna med två och varannan med ett. / * Addera siffersummorna av produkterna. / * Drag detta från närmast större / (eller lika) tiotal. / / 8 4 0 5 3 1 6 9 4 / * 2 1 2 1 2 1 2 1 2 / ---------------------------- / 16 4 0 5 6 1 12 9 8 / 7 +4 +0 +5 +6 +1 +3 +9 +8 / = 43 / / Kontrollsiffran är 7 // /***********************************************/ import java.util.Scanner; public class PnrUtanArray { public static void main(String [] arg) { Scanner scan = new Scanner(System.in); int tal, siffra, res=0; boolean jämn = false; Std.out.print("Ge de första 9 siffrorna: "); tal = scan.nextInt(); for (int i = 1; i <= 9; i++) { siffra = tal % 10; tal /= 10; if (jämn) { res = res + siffra; } else if (siffra<5) { res = res + 2*siffra; } else { res = res + 2*siffra - 10 + 1; } jämn = !jämn; } Std.out.println("Kontrollsiffran är " + (100-res)%10); } } /* Testkörning: > javac PnrUtanArray.java > java PnrUtanArray Ge de första 9 siffrorna: 840531694 Kontrollsiffran är 7 > */
for
-loopen innehåller en loopvariabel som initieras,
räknas upp/ned och kontrolleras.
Fibonaccital
import java.util.Scanner; public class Fibonacci { public static void main(String [] arg) { Scanner scan = new Scanner(System.in); int n, i, fn, fnMin1, fnMin2; System.out.print("Ge ett tal: "); n = scan.nextInt(); if (n == 0) { fn = 0; } else if (n == 1) { fn = 1; } else { fn = 1; fnMin1 = 1; fnMin2 = 0; for (i=3; i<=n; i++) { fnMin2 = fnMin1; fnMin1 = fn; fn = fnMin1 + fnMin2; } } System.out.println("Det " + n + ":e fibonaccitalet är " + fn); } } /* Testkörning: > java Fibonacci Ge ett tal: 0 Det 0:e fibonaccitalet är 0 > java Fibonacci Ge ett tal: 1 Det 1:e fibonaccitalet är 1 > java Fibonacci Ge ett tal: 2 Det 2:e fibonaccitalet är 1 > java Fibonacci Ge ett tal: 3 Det 3:e fibonaccitalet är 2 > java Fibonacci Ge ett tal: 45 Det 45:e fibonaccitalet är 1134903170 > java Fibonacci Ge ett tal: 46 Det 46:e fibonaccitalet är 1836311903 > java Fibonacci Ge ett tal: 47 Det 47:e fibonaccitalet är -1323752223 > java Fibonacci Ge ett tal: 48 Det 48:e fibonaccitalet är 512559680 > java Fibonacci Ge ett tal: 49 Det 49:e fibonaccitalet är -811192543 > java Fibonacci Ge ett tal: -1 Det -1:e fibonaccitalet är 1 */
// Program som visar vådan av // att ha flyttal i for-loopar import java.util.Scanner;; public class FelIntLoop { public static void main(String [] arg) { double x; // Denna loop går elva varv for (x=0; x<=1; x=x+0.1) { System.out.println(x + " "); } System.out.println(); // Denna loop går bara tio varv for (x=1; x<=2; x=x+0.1) { System.out.println(x + " "); } } } /* % java FelIntLoop 0.0 0.1 0.2 0.30000000000000004 0.4 0.5 0.6 0.7 0.7999999999999999 0.8999999999999999 0.9999999999999999 1.0 1.1 1.2000000000000002 1.3000000000000003 1.4000000000000004 1.5000000000000004 1.6000000000000005 1.7000000000000006 1.8000000000000007 1.9000000000000008 */