Java fundamentals through coding exercises
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

3.3 KiB

Toteuta ohjelma Mars-planeetan lämpötilamittausten tarkasteluun. Marsin alin lämpötila (pinnalla) on -140 astetta, korkein lämpötila on 20 astetta. Ohjelmalle tulee syöttää 10 hyväksyttyä mittaustulosta, jotka ohjelma kerää int[]-tyyppiseen taulukkoon, jonka pituus on 10. Jos käyttäjä syöttää luvun, joka on pienempi kuin -140 tai suurempi kuin 20, lukua ei laiteta taulukkoon vaan se pyydetään uudelleen esimerkkisuorituksen mukaisesti.

Lopuksi ohjelman tulee tulostaa lämpötilamittausten keskiarvo sekä minimi- ja maksimiarvot.

HUOM! Tehtävässä on tarkoitus harjoitella taulukoiden käyttöä, joten listojen käyttäminen on tässä tehtävässä kiellettyä.

Huom! Älä pyöristä lopussa tulostettavaa keskiarvoa

Example output:
Syötä mittaus 1/10: 10
Syötä mittaus 2/10: 19
Syötä mittaus 3/10: 18
Syötä mittaus 4/10: 15
Syötä mittaus 5/10: 1
Syötä mittaus 6/10: -1
Syötä mittaus 7/10: -12
Syötä mittaus 8/10: -200
Anna lämpötila väliltä -140 - +20!
Syötä mittaus 8/10: -88
Syötä mittaus 9/10: -85
Syötä mittaus 10/10: 21
Anna lämpötila väliltä -140 - +20!
Syötä mittaus 10/10: -72
Mittausten keskiarvo: -19.5
Pienin mittaustulos: -88
Suurin mittaustulos: 19

MarsinLampotilat.java

//import java.text.DecimalFormat;
import java.util.InputMismatchException;
import java.util.Scanner;
public class MarsinLampotilat {
public static void main(String[] args) {
//DecimalFormat r1 = new DecimalFormat(".0");
int i = 0, lampoInput = 1, max = 10;
int minTemp = -140, maxTemp = 20;
String minTempPrefix = "", maxTempPrefix = "";
int lampoSumma = 0, currentTemp = 0, pienin = 0, suurin = 0;
int[] lampotilatMars = new int[max];
if (minTemp > 0) { minTempPrefix = "+"; }
if (maxTemp > 0) { maxTempPrefix = "+"; }
while (lampoInput <= max) {
Scanner syote = new Scanner(System.in);
System.out.printf("Syötä mittaus %d/%d: ", lampoInput, max);
try {
int lampotila = syote.nextInt();
if (lampotila < minTemp || lampotila > maxTemp) {
// stderr should be used, but we print to stdout
System.out.printf(
"Anna lämpötila väliltä %s%d - %s%d!\n",
minTempPrefix, minTemp,
maxTempPrefix, maxTemp
);
continue;
} else {
lampotilatMars[i] = lampoInput;
lampoSumma += lampotila;
if (lampotila < pienin) { pienin = lampotila; }
if (lampotila > suurin) { suurin = lampotila; }
}
} catch (NumberFormatException | InputMismatchException e) {
// stderr should be used, but we print to stdout
System.out.println("Antamasi syöte ei ole kokonaisluku");
continue;
}
lampoInput++; i++;
}
System.out.printf(
"Mittausten keskiarvo: %s\n" + "Pienin mittaustulos: %d\n" + "Suurin mittaustulos: %d\n",
(double)lampoSumma / lampotilatMars.length,
pienin,
suurin
);
}
}