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.

97 lines
3.3 KiB

4 years ago
  1. 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.
  2. Lopuksi ohjelman tulee tulostaa lämpötilamittausten keskiarvo sekä minimi- ja maksimiarvot.
  3. HUOM! Tehtävässä on tarkoitus harjoitella taulukoiden käyttöä, joten listojen käyttäminen on tässä tehtävässä kiellettyä.
  4. Huom! Älä pyöristä lopussa tulostettavaa keskiarvoa
  5. ```
  6. Example output:
  7. Syötä mittaus 1/10: 10
  8. Syötä mittaus 2/10: 19
  9. Syötä mittaus 3/10: 18
  10. Syötä mittaus 4/10: 15
  11. Syötä mittaus 5/10: 1
  12. Syötä mittaus 6/10: -1
  13. Syötä mittaus 7/10: -12
  14. Syötä mittaus 8/10: -200
  15. Anna lämpötila väliltä -140 - +20!
  16. Syötä mittaus 8/10: -88
  17. Syötä mittaus 9/10: -85
  18. Syötä mittaus 10/10: 21
  19. Anna lämpötila väliltä -140 - +20!
  20. Syötä mittaus 10/10: -72
  21. Mittausten keskiarvo: -19.5
  22. Pienin mittaustulos: -88
  23. Suurin mittaustulos: 19
  24. ```
  25. --------------------
  26. **MarsinLampotilat.java**
  27. ```
  28. //import java.text.DecimalFormat;
  29. import java.util.InputMismatchException;
  30. import java.util.Scanner;
  31. public class MarsinLampotilat {
  32. public static void main(String[] args) {
  33. //DecimalFormat r1 = new DecimalFormat(".0");
  34. int i = 0, lampoInput = 1, max = 10;
  35. int minTemp = -140, maxTemp = 20;
  36. String minTempPrefix = "", maxTempPrefix = "";
  37. int lampoSumma = 0, currentTemp = 0, pienin = 0, suurin = 0;
  38. int[] lampotilatMars = new int[max];
  39. if (minTemp > 0) { minTempPrefix = "+"; }
  40. if (maxTemp > 0) { maxTempPrefix = "+"; }
  41. while (lampoInput <= max) {
  42. Scanner syote = new Scanner(System.in);
  43. System.out.printf("Syötä mittaus %d/%d: ", lampoInput, max);
  44. try {
  45. int lampotila = syote.nextInt();
  46. if (lampotila < minTemp || lampotila > maxTemp) {
  47. // stderr should be used, but we print to stdout
  48. System.out.printf(
  49. "Anna lämpötila väliltä %s%d - %s%d!\n",
  50. minTempPrefix, minTemp,
  51. maxTempPrefix, maxTemp
  52. );
  53. continue;
  54. } else {
  55. lampotilatMars[i] = lampoInput;
  56. lampoSumma += lampotila;
  57. if (lampotila < pienin) { pienin = lampotila; }
  58. if (lampotila > suurin) { suurin = lampotila; }
  59. }
  60. } catch (NumberFormatException | InputMismatchException e) {
  61. // stderr should be used, but we print to stdout
  62. System.out.println("Antamasi syöte ei ole kokonaisluku");
  63. continue;
  64. }
  65. lampoInput++; i++;
  66. }
  67. System.out.printf(
  68. "Mittausten keskiarvo: %s\n" + "Pienin mittaustulos: %d\n" + "Suurin mittaustulos: %d\n",
  69. (double)lampoSumma / lampotilatMars.length,
  70. pienin,
  71. suurin
  72. );
  73. }
  74. }
  75. ```