//Använd main som ett "handtag" för att hålla ihop programmet. //Själva programmet finns i övriga klasser.

Relevanta dokument
Ett exempel som illustration till Laboration 1

Uppdaterat Systemunderhåll, kvalitetsarbete, testning

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Att skriva till och läsa från terminalfönstret

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

JAVAUTVECKLING LEKTION 4

JAVAUTVECKLING LEKTION 7

4 13 / %.; 8 </" '': " / //&' " " ' * TelefonKostnad +,-%&. #!" $% " &' . > / ' 5 /' * 13/ &' static Math 1+" &'/ % 12 "" static "' * 1 /") %& &

Tentamen , Introduktion till Java, dtaa98, dtea53

Tentamen. Lösningsförslag

Objektorienterad programmering i Java

[] Arrayer = Indexerad variabel

Parsing med Recursive Descent, Avbildningsklasser. Syntaxdiagram. Syntaxdiagram och kodning expression. Betrakta följande uttryck

String [] argv. Dagens Agenda. Mer om arrayer. Mer om arrayer forts. String [] argv. argv är variabelnamnet. Arrayer och Strängar fortsättning

F4. programmeringsteknik och Matlab

SMD 134 Objektorienterad programmering

1 Programmering i Java. Program element - Introduktion. Exempel. Exempel. Kapitel 3:

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

Övning2. Variabler. Data typer

Tentamen OOP

Föreläsning 3-4 Innehåll

Dagens text. Programmeringsteknik. Mer om Scanner-klassen. Dialogrutor (klassen JOptionPane) Bubbelsortering. Omslagsklasser.

Lite om reella tal. Programmering. I java. Om operatorers associativitet och prioritet

Dagens text. Programmeringsteknik. Mer om Scanner-klassen. Dialogrutor (klassen JOptionPane) Bubbelsortering. Omslagsklasser.

OOP Objekt-orienterad programmering

Tentamen , Grundläggande programmering i Java

Command line argumenter. Objektorienterad Programmering (TDDC77) Vad blir resultatet? Nu då? Ahmed Rezine. Hösttermin 2016

Objektorienterad Programmering (TDDC77)

Lite mer om Javas stöd för fält. Programmering. Exempel: vad är det största talet? hh.se/db2004. Fält samt Input/Output

Språkkonventioner och redigering av tal.

Objektorienterad Programmering (TDDC77)

Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.

JAVAUTVECKLING LEKTION 8

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.

Föreläsning 3. Iteration while-satsen

OOP Objekt-orienterad programmering

Iteration while-satsen

1 Uppgift 1. a) Skapar ett Company-objekt med hjälp av den överlagrade konstruktorn. Du kan själv välja värden på instansvariablerna.

TDDC30. Kursledning Kursledare: Jonas Lindgren. Labassistent: Jonas Lindgren Labassistent: Niklas Holma Labassistent: Erik Nilsson

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet

Föreläsning 2, vecka 8: Repetition

Programstruktur och terminologi. Programmet producerar följande utskrift i terminalfönstret: Ett Javaprogram består av en eller flera klasser

List.java. List.java. Printed by Tom Smedsaas

Objektorienterad programmering. Fält som funktionsresultat. Mer om fält: att uppdatera ett parameterfält. Kontrast: Parametrar av primitiv typ

725G61 - Laboration 4 Interaktion och I/O. Johan Falkenjack

Föreläsning 1 & 2 INTRODUKTION

Dagens föreläsning. Sett i datorsalarna. Mer om arrayer. Matriser. Formatering av utskrifter. Inläsning med hjälp av Scanner-klassen

Tentamen på kursen DA7351, Programmering , kl Malmö högskola Teknik och samhälle. DA7351, Programmering

Laboration 13, Arrayer och objekt

Tänk på följande: Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Felhantering. Andra brott mot språkets regler. Man kan också i programmet bryta mot ett antal olika regler som gäller. Exempelvis:

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

Tentamen ID1004 Objektorienterad programmering May 29, 2012

F2 Datatyper och variabler. ID1004 Objektorienterad programmering Fredrik Kilander

Skillnader mellan Python och Java

Lösningar för tenta 2 DAT043,

Objektorienterad Programmering (TDDC77)

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy. Funktioner / metoder. Punktnotation. Evalueringsordning

Tentamensskrivning Nätverksprogrammering (EDA095 - FED) , kl 8-13

Arrayer (fält)

Heltalsrepresentation. Fler byggstenar. Overflow och Underflow. TvŒ-komplement. FlyttalsvŠrden. Fyra heltalstyper. Tecken-bit

Hej Då, Karel! Programmering. Vårt första Javaprogram. hh.se/db2004. Java. Grundtyper, variabler och arrayer

Del A (obligatorisk för alla)

Den som bara har en hammare tror att alla problem är spikar

OOP Objekt-orienterad programmering

Kort repetition. Programmeringsteknik för Bio1 och I1. Vad ska vi lära oss idag? Ett exempel

Kapitel 6. Hakparenteser fšr att ange index MŒnga všrden av samma typ

Tentamen Programmeringsteknik II för STS Skrivtid: Inga hjälpmedel.

Dagens föreläsning. Sett i datorsalarna. Mer om arrayer. Matriser. Formatering av utskrifter. Inläsning med hjälp av Scanner-klassen

DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin

2 b) Följande finns definierat: public class Spel String titel = "Spel"; Dice[] tärningar = new Dice[10]; tärningar[0] = new Dice("Röd"); tärningar[1]

Instuderingsfrågor, del B

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program

Hur ser ett Java-program ut?

Objektorienterad Programmering (TDDC77)

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 12

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 1 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

2 b) Bodega bodegan = new Bodega(); double moms = 0.235; String namn = "Vargtass"; System.out.println(namn + " " + moms + bodegan.ändra(moms, namn); S

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Uppgift: Algoritm för att beräkna kontrollsiffran i ett personnummer givet de 9 första siffrorna. Torrsimning av algoritm för personnummer

FÖRSLAG TILL LÖSNINGAR FÖR TENTAMEN I INTERNETPROGRAMMERING MED JAVA, 5p för SY , kl

17.9 Funktioner för avbildningstabeller

Lösningsförslag: Instuderingsfrågor, del A

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

2 b) Följande finns definierat: import java.awt.*; public class Uppgift1b public static void main(string[] mupp) Color färg = Color.blue; Bil[] bilar

Namn: Personnr: 1 2D1310 Programmeringsteknik i Java för B,V (1p) 13 januari 2001, kl Hjälpmedel: En Javabok. För betyget godkänt krävs at

PROGRAMMERING-Java TENTAMINA

2 b) Följande finns definierat: public class Käk String titel = "Chili con carne"; Krydda[] kryddor = new Krydda[10]; kryddor[0] = new Krydda("Svartpe

Del A (obligatorisk för alla)

Föreläsning 6: Metoder och fält (arrays)

Föreläsning 1 & 2 INTRODUKTION

Föreläsning 3. Iteration. while-satsen for-satsen do-satsen

Outline. I Vi kan lätt göra samma sak för fyra variabler... I Hur gör vi för 400 inlästa värden? I Ofta behöver man flera likadana variabler

TDDC77 Objektorienterad Programmering

Introduktion till Datalogi DD1339. Föreläsning 3 29 sept 2014

Malmö högskola 2012/2013 Teknik och samhälle

Transkript:

/*==================================================================== Detta program hör ihop med dokumentet EXEMPEL_AVERAGE_POINTS.PDF där det finns förklaringar. ======================================================================*/ package java_medelbetyg; public class main { public static void main(string[] args) throws IOException { //Använd main som ett "handtag" för att hålla ihop programmet. //Själva programmet finns i övriga klasser. //Klassen AveragePoints innehåller en metod som räknar ut medelvärdet //av ett valfritt antal poängvärden, som användaren matar in. //Det finns flera versioner av klassen, som förklaras i dokumentet // exempel_average_points.pdf. AveragePoints00 ap = new AveragePoints00(); //AveragePoints01 ap = new AveragePoints01(); //AveragePoints02 ap = new AveragePoints02(); //AveragePoints03 ap = new AveragePoints03(); //AveragePoints04 ap = new AveragePoints04(); //AveragePoints05 ap = new AveragePoints05(); //AveragePoints06 ap = new AveragePoints06(); ap.calculateaveragepoints(); // Rutan 'Medelpoäng för kurser' i JSP-diagrammet.

package java_medelbetyg; import java.io.bufferedreader; import java.io.inputstreamreader; public class AveragePoints00 { public void calculateaveragepoints() throws IOException { // Utför rutan 'Medelpoäng för kurser' i JSP-diagrammet. //Konstanter final int ANTAL = 150; //Versaler för konstanter enligt konventionen för Java //Variabler int x, i = -1, sum; //x = talet som matades in, i = varvräknare, sum = summan av poängen. String svar; //Användarens svar på frågor //Designbeslut: Det ska få plats 150 tal. Två alternativ: // 1. new int[antal] ==> det första talet på index=0, det 150:e elementet har index 149 etc. // 2. new int[antal+1] ==> använd ej index 0, första talet på index = 1 och // det 150:e på index =150. int[] tal = new int[antal]; //Det 150:e elementet har index 149. //IO (denna programmerare ogillar scanner bl.a. pga problemen när olika datatyper ska läsas). // BufferedReader är entydig och tillförlitlig. BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); do { // En kurs // Tomma rutan i JSP-diagrammet utgörs av allt inne i loopen do { //Inmatning (användaren matar in poängen ett åt gången) System.out.printf("Poäng följd av ENTER (0 och ENTER för att avsluta): "); i = i + 1; x = Integer.parseInt( br.readline() ); //Inmatning en poäng tal[i] = x; // Programmeraren använder talet 0 för att representera att användaren vill // avbryta inmatningen. while (!(x == 0) i == ANTAL ); // Avbryt? //Programmeraren vet att det inte går att lägga in fler värden än vad arrayen är //dimensionerad för och såg till att loopen avbryts om arrayen är full ( i === ANTAL). //Ett tillägg i koden av något som inte finns i designen (JSP-diagrammet). // Beräkning //Summera sum = 0; for (int k = 0; k <= i; k++) { sum = sum + tal[k];

//Medelvärde. // 7 positioner för decimaltalet, varav 1 decimal (medför standardavrundning), högerjusterat. // För att få decimalresultat av division av två integer: // konvertera ett av talen till double. System.out.print("Medelpoäng: "); System.out.format("%7.1f%n", (double)(sum/(i + 1))); //Sluta? System.out.printf ("Sluta? (J/N) "); svar = br.readline(); while (!svar.equals("j")); //Sluta? System.out.println("Klart."); //END calculateaveragepoints00

package java_medelbetyg; import java.io.bufferedreader; import java.io.inputstreamreader; public class AveragePoints01 { //ÄNDRAT FRÅN VERSION 00: // Lagt till antalinmatade. // x och sum har nu datatypen Double - ändrat på flera platser // Ändra brytvillkor i inmatningsloppen från 0 till -1. // Medelpoängen räknas ut och skrivs ut som två separata operationer. public void calculateaveragepoints() throws IOException { // Utför rutan 'Medelpoäng för kurser' i JSP-diagrammet. //Konstanter final int ANTAL = 150; //Versaler för konstanter enligt konventionen för Java //Variabler int i = -1; //i = varvräknare, 1 lägre än det lägsta värdet som arrayindexet får ha Double x, sum; //x = talet som matades in, sum = summan av poängen. Double för decimalpoäng //och för att få decimaler i resulatet av divisionen. int antalinmatade; //NYTT: Används för tydlighet för den som läser koden String svar; //Användarens svar på frågor Double medel; //Medelvärdet Boolean avbryt, sluta; //NYTT: För tydlighet i looparnas brytvillkor //Designbeslut: Det ska få plats 150 tal. Två alternativ: // 1. new int[antal] ==> det första talet på index=0, det 150:e elementet har index 149 etc. // 2. new int[antal+1] ==> använd ej index 0, första talet på index = 1 och // det 150:e på index =150. Double[] tal = new Double[ANTAL]; //Det 150:e elementet har index 149. //IO (denna programmerare ogillar scanner bl.a. pga problemen när olika datatyper ska läsas). // BufferedReader är entydig och tillförlitlig. BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); // 'Gör jobbet'-rutan i JSP-diagrammet utgörs av allt inne i loopen do { // En kurs //Inmatning (användaren matar in poängen ett åt gången) do { //Inmatning en poäng (den tomma rutan i JSP-diagrammet) System.out.printf("Poäng följd av ENTER (-1 för att avsluta): "); i = i + 1; x = Double.parseDouble( br.readline() ); //Användaren skriver in ett tal tal[i] = x; // Programmeraren använder talet -1 för att representera att användaren vill // avbryta inmatningen. // Om x är -1 sätts (x == -1) True, annars till False. // Om i = ANTAL, sätts i == ANTAL till True,annars till false. // Om det är minst ett True, sätts avbryt till True, annars till False. avbryt = (x == -1) i == ANTAL; while (!avbryt); // Avbryt?

//Programmeraren vet att det inte går att lägga in fler värden än vad arrayen är //dimensionerad för och såg till att loopen avbryts om arrayen är full ( i === ANTAL). //Ett tillägg i koden av något som inte finns i designen (JSP-diagrammet). antalinmatade = i + 1; // Beräkning //Summera sum = 0.0; for (int k = 0; k <= i; k++) { sum = sum + tal[k]; //Medelvärde. // 7 positioner för decimaltalet, varav 1 decimal (medför standardavrundning), högerjusterat. // För att få decimalresultat av division av två integer: // konvertera ett av talen till double. System.out.print("Medelpoäng: "); medel = (double)(sum/antalinmatade); // Utskrift System.out.format("%7.1f%n", medel ); //Sluta? System.out.printf ("Sluta? (J/N) "); svar = br.readline(); sluta = svar.equals("j"); while (!sluta); //Sluta? System.out.println("Klart."); //END calculateaveragepoints

package java_medelbetyg; import java.io.bufferedreader; import java.io.inputstreamreader; public class AveragePoints02 { //ÄNDRAT FRÅN VERSION 01: // Korrekt uträkning av medelpoängen public void calculateaveragepoints() throws IOException { // Utför rutan 'Medelpoäng för kurser' i JSP-diagrammet. //Konstanter final int ANTAL = 150; //Versaler för konstanter enligt konventionen för Java //Variabler int i = -1; //i = varvräknare, 1 lägre än det lägsta värdet som arrayindexet får ha Double x, sum; //x = talet som matades in, sum = summan av poängen. Double för decimalpoäng //och för att få decimaler i resulatet av divisionen. int antalinmatade; //NYTT: Används för tydlighet för den som läser koden String svar; //Användarens svar på frågor Double medel; //Medelvärdet Boolean avbryt, sluta; //NYTT: För tydlighet i looparnas brytvillkor //Designbeslut: Det ska få plats 150 tal. Två alternativ: // 1. new int[antal] ==> det första talet på index=0, det 150:e elementet har index 149 etc. // 2. new int[antal+1] ==> använd ej index 0, första talet på index = 1 och // det 150:e på index =150. Double[] tal = new Double[ANTAL]; //Det 150:e elementet har index 149. //IO (denna programmerare ogillar scanner bl.a. pga problemen när olika datatyper ska läsas). // BufferedReader är entydig och tillförlitlig. BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); // 'Gör jobbet'-rutan i JSP-diagrammet utgörs av allt inne i loopen do { // En kurs //Inmatning (användaren matar in poängen ett åt gången) do { //Inmatning en poäng (den tomma rutan i JSP-diagrammet) System.out.printf("Poäng följd av ENTER (-1 för att avsluta): "); x = Double.parseDouble( br.readline() ); //Användaren skriver in ett tal avbryt = (x == -1); //avbryt blir True eller False if(!avbryt ) { i = i + 1; tal[i] = x; //Undvik att ändra 'avbryt' från True till False. Ändra bara om det är till True.

if (i == ANTAL) { avbryt = true; while (!avbryt); // Avbryt? //Programmeraren vet att det inte går att lägga in fler värden än vad arrayen är //dimensionerad för och såg till att loopen avbryts om arrayen är full ( i === ANTAL). //Ett tillägg i koden av något som inte finns i designen (JSP-diagrammet). antalinmatade = i + 1; // Beräkning //Summera sum = 0.0; for (int k = 0; k <= i; k++) { sum = sum + tal[k]; //För testning System.out.println("sum=" + sum + " antal=" + antalinmatade); //Medelvärde. // 7 positioner för decimaltalet, varav 1 decimal (medför standardavrundning), högerjusterat. // För att få decimalresultat av division av två integer: // konvertera ett av talen till double. System.out.print("Medelpoäng: "); medel = (double)(sum/antalinmatade); // Utskrift System.out.format("%7.1f%n", medel ); //Sluta? System.out.printf ("Sluta? (J/N) "); svar = br.readline(); sluta = svar.equals("j"); while (!sluta); //Sluta? System.out.println("Klart."); //END calculateaveragepoints

package java_medelbetyg; import java.io.bufferedreader; import java.io.inputstreamreader; public class AveragePoints03 { //ÄNDRAT FRÅN VERSION 01: // Korrekt uträkning av medelpoängen public void calculateaveragepoints() throws IOException { // Utför rutan 'Medelpoäng för kurser' i JSP-diagrammet. //Konstanter final int ANTAL = 3; //Versaler för konstanter enligt konventionen för Java //Variabler int i; //i = varvräknare Double x, sum; //x = talet som matades in, sum = summan av poängen. Double för decimalpoäng //och för att få decimaler i resulatet av divisionen. int antalinmatade; //NYTT: Används för tydlighet för den som läser koden String svar; //Användarens svar på frågor Double medel; //Medelvärdet Boolean avbryt, sluta; //NYTT: För tydlighet i looparnas brytvillkor //Designbeslut: Det ska få plats 150 tal. Två alternativ: // 1. new int[antal] ==> det första talet på index=0, det 150:e elementet har index 149 etc. // 2. new int[antal+1] ==> använd ej index 0, första talet på index = 1 och // det 150:e på index =150. Double[] tal = new Double[ANTAL]; //Det 150:e elementet har index 149. //IO (denna programmerare ogillar scanner bl.a. pga problemen när olika datatyper ska läsas). // BufferedReader är entydig och tillförlitlig. BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); // 'Gör jobbet'-rutan i JSP-diagrammet utgörs av allt inne i loopen do { // En kurs //Inmatning (användaren matar in poängen ett åt gången) i = -1; // i = ett lägre än det lägsta värdet som arrayindexet får ha do { //Inmatning en poäng (den tomma rutan i JSP-diagrammet) System.out.printf("Poäng följd av ENTER (-1 för att avsluta): "); x = Double.parseDouble( br.readline() ); //Användaren skriver in ett tal avbryt = (x == -1); //avbryt blir True eller False if(!avbryt ) { i = i + 1; tal[i] = x;

//Undvik att ändra 'avbryt' från True till False. Ändra bara om det är till True. if (i == ANTAL) { avbryt = true; while (!avbryt); // Avbryt? //Programmeraren vet att det inte går att lägga in fler värden än vad arrayen är //dimensionerad för och såg till att loopen avbryts om arrayen är full ( i === ANTAL). //Ett tillägg i koden av något som inte finns i designen (JSP-diagrammet). antalinmatade = i + 1; // Beräkning //Summera sum = 0.0; for (int k = 0; k <= i; k++) { sum = sum + tal[k]; //För testning System.out.println("sum=" + sum + " antal=" + antalinmatade); //Medelvärde. // 7 positioner för decimaltalet, varav 1 decimal (medför standardavrundning), högerjusterat. // För att få decimalresultat av division av två integer: // konvertera ett av talen till double. System.out.print("Medelpoäng: "); medel = (double)(sum/antalinmatade); // Utskrift System.out.format("%7.1f%n", medel ); //Sluta? System.out.printf ("Sluta? (J/N) "); svar = br.readline(); sluta = svar.equals("j"); while (!sluta); //Sluta? System.out.println("Klart."); //END calculateaveragepoints

package java_medelbetyg; import java.io.bufferedreader; import java.io.inputstreamreader; public class AveragePoints04 { //ÄNDRAT FRÅN VERSION 01: // Korrekt uträkning av medelpoängen public void calculateaveragepoints() throws IOException { // Utför rutan 'Medelpoäng för kurser' i JSP-diagrammet. //Konstanter final int ANTAL = 3; //Versaler för konstanter enligt konventionen för Java //Variabler int i; //i = varvräknare Double x, sum; //x = talet som matades in, sum = summan av poängen. Double för decimalpoäng //och för att få decimaler i resulatet av divisionen. int antalinmatade; //NYTT: Används för tydlighet för den som läser koden String svar; //Användarens svar på frågor Double medel; //Medelvärdet Boolean avbryt, sluta; //NYTT: För tydlighet i looparnas brytvillkor //Designbeslut: Det ska få plats 150 tal. Två alternativ: // 1. new int[antal] ==> det första talet på index=0, det 150:e elementet har index 149 etc. // 2. new int[antal+1] ==> använd ej index 0, första talet på index = 1 och // det 150:e på index =150. Double[] tal = new Double[ANTAL]; //Det 150:e elementet har index 149. //IO (denna programmerare ogillar scanner bl.a. pga problemen när olika datatyper ska läsas). // BufferedReader är entydig och tillförlitlig. BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); // 'Gör jobbet'-rutan i JSP-diagrammet utgörs av allt inne i loopen do { // En kurs //Inmatning (användaren matar in poängen ett åt gången) i = -1; // i = ett lägre än det lägsta värdet som arrayindexet får ha do { //Inmatning en poäng (den tomma rutan i JSP-diagrammet) System.out.printf("Poäng följd av ENTER (-1 för att avsluta): "); x = Double.parseDouble( br.readline() ); //Användaren skriver in ett tal avbryt = (x == -1); //avbryt blir True eller False if(!avbryt ) { i = i + 1; //Undvik att ändra 'avbryt' från True till False. Ändra bara om det är till True.

if (i == ANTAL) { avbryt = true; else { tal[i] = x; System.out.print ("LOOPEN INMATNING: i="+i ); //FÖR TESTNING System.out.println("; tal[i]="+tal[i]); //FÖR TESTNING while (!avbryt); // Avbryt? antalinmatade = i + 1; // Beräkning //Summera sum = 0.0; for (int k = 0; k <= i; k++) { System.out.println("K="+k); //FÖR TESTNING sum = sum + tal[k]; //För testning System.out.println("sum=" + sum + " antal=" + antalinmatade); //Medelvärde. // 7 positioner för decimaltalet, varav 1 decimal (medför standardavrundning), högerjusterat. // För att få decimalresultat av division av två integer: // konvertera ett av talen till double. System.out.print("Medelpoäng: "); medel = (double)(sum/antalinmatade); // Utskrift System.out.format("%7.1f%n", medel ); //Sluta? System.out.printf ("Sluta? (J/N) "); svar = br.readline(); sluta = svar.equals("j"); while (!sluta); //Sluta? System.out.println("Klart."); //END calculateaveragepoints

package java_medelbetyg; import java.io.bufferedreader; import java.io.inputstreamreader; public class AveragePoints05 { //ÄNDRAT FRÅN VERSION 01: // Korrekt uträkning av medelpoängen public void calculateaveragepoints() throws IOException { // Utför rutan 'Medelpoäng för kurser' i JSP-diagrammet. //Konstanter final int ANTAL = 3; //Versaler för konstanter enligt konventionen för Java //Variabler int i; //i = varvräknare Double x, sum; //x = talet som matades in, sum = summan av poängen. Double för decimalpoäng //och för att få decimaler i resulatet av divisionen. int antalinmatade; //NYTT: Används för tydlighet för den som läser koden String svar; //Användarens svar på frågor Double medel; //Medelvärdet Boolean avbryt, sluta; //NYTT: För tydlighet i looparnas brytvillkor //Designbeslut: Det ska få plats 150 tal. Två alternativ: // 1. new int[antal] ==> det första talet på index=0, det 150:e elementet har index 149 etc. // 2. new int[antal+1] ==> använd ej index 0, första talet på index = 1 och // det 150:e på index =150. Double[] tal = new Double[ANTAL]; //Det 150:e elementet har index 149. //IO (denna programmerare ogillar scanner bl.a. pga problemen när olika datatyper ska läsas). // BufferedReader är entydig och tillförlitlig. BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); // 'Gör jobbet'-rutan i JSP-diagrammet utgörs av allt inne i loopen do { // En kurs //Inmatning (användaren matar in poängen ett åt gången) i = -1; // i = ett lägre än det lägsta värdet som arrayindexet får ha do { //Inmatning en poäng (den tomma rutan i JSP-diagrammet) System.out.printf("Poäng följd av ENTER (-1 för att avsluta): "); x = Double.parseDouble( br.readline() ); //Användaren skriver in ett tal avbryt = (x == -1); //avbryt blir True eller False if(!avbryt ) { i = i + 1;

tal[i] = x; //Undvik att ändra 'avbryt' från True till False. Ändra bara om det är till True. if (i == ANTAL - 1) { avbryt = true; System.out.print ("LOOPEN INMATNING: i="+i ); //FÖR TESTNING System.out.println("; tal[i]="+tal[i]); //FÖR TESTNING while (!avbryt); // Avbryt? antalinmatade = i + 1; // Beräkning //Summera sum = 0.0; for (int k = 0; k <= i; k++) { System.out.println("K="+k); //FÖR TESTNING sum = sum + tal[k]; //För testning System.out.println("sum=" + sum + " antal=" + antalinmatade); //Medelvärde. // 7 positioner för decimaltalet, varav 1 decimal (medför standardavrundning), högerjusterat. // För att få decimalresultat av division av två integer: // konvertera ett av talen till double. System.out.print("Medelpoäng: "); medel = (double)(sum/antalinmatade); // Utskrift System.out.format("%7.1f%n", medel ); //Sluta? System.out.printf ("Sluta? (J/N) "); svar = br.readline(); sluta = svar.equals("j"); while (!sluta); //Sluta? System.out.println("Klart."); //END calculateaveragepoints

package java_medelbetyg; import java.io.bufferedreader; import java.io.inputstreamreader; public class AveragePoints06 { //ÄNDRAT FRÅN VERSION 01: // Korrekt uträkning av medelpoängen public void calculateaveragepoints() throws IOException { // Utför rutan 'Medelpoäng för kurser' i JSP-diagrammet. //Konstanter final int ANTAL = 3; //Versaler för konstanter enligt konventionen för Java //Variabler int i; //i = varvräknare Double x, sum; //x = talet som matades in, sum = summan av poängen. Double för decimalpoäng //och för att få decimaler i resulatet av divisionen. int antalinmatade; //NYTT: Används för tydlighet för den som läser koden String svar; //Användarens svar på frågor Double medel; //Medelvärdet Boolean avbryt, sluta; //NYTT: För tydlighet i looparnas brytvillkor //Designbeslut: Det ska få plats 150 tal. Två alternativ: // 1. new int[antal] ==> det första talet på index=0, det 150:e elementet har index 149 etc. // 2. new int[antal+1] ==> använd ej index 0, första talet på index = 1 och // det 150:e på index =150. Double[] tal = new Double[ANTAL]; //Det 150:e elementet har index 149. //IO (denna programmerare ogillar scanner bl.a. pga problemen när olika datatyper ska läsas). // BufferedReader är entydig och tillförlitlig. BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); // 'Gör jobbet'-rutan i JSP-diagrammet utgörs av allt inne i loopen do { // En kurs //Inmatning (användaren matar in poängen ett åt gången) i = -1; // i = ett lägre än det lägsta värdet som arrayindexet får ha do { //Inmatning en poäng (den tomma rutan i JSP-diagrammet) System.out.printf("Poäng följd av ENTER (-1 för att avsluta): "); x = Double.parseDouble( br.readline() ); //Användaren skriver in ett tal avbryt = (x == -1); //avbryt blir True eller False if(!avbryt ) { i = i + 1; tal[i] = x;

//Undvik att ändra 'avbryt' från True till False. Ändra bara om det är till True. if (i == ANTAL - 1) { avbryt = true; System.out.print ("LOOPEN INMATNING: i="+i ); //FÖR TESTNING System.out.println("; tal[i]="+tal[i]); //FÖR TESTNING while (!(x==-1) &&!(i==antal-1)); // Avbryt? antalinmatade = i + 1; // Beräkning //Summera sum = 0.0; for (int k = 0; k <= i; k++) { System.out.println("K="+k); //FÖR TESTNING sum = sum + tal[k]; //För testning System.out.println("sum=" + sum + " antal=" + antalinmatade); //Medelvärde. // 7 positioner för decimaltalet, varav 1 decimal (medför standardavrundning), högerjusterat. // För att få decimalresultat av division av två integer: // konvertera ett av talen till double. System.out.print("Medelpoäng: "); medel = (double)(sum/antalinmatade); // Utskrift System.out.format("%7.1f%n", medel ); //Sluta? System.out.printf ("Sluta? (J/N) "); svar = br.readline(); sluta = svar.equals("j"); while (!sluta); //Sluta? System.out.println("Klart."); //END calculateaveragepoints