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.
 

4.0 KiB

Tee ohjelma Opintopisteet, joka kysyy, monesko lukukausi opiskelijalla on menossa. Tämän jälkeen ohjelma, kuinka monta opintopistettä opiskelija on saanut kunakin lukukautena. Lopuksi ohjelma kertoo

  • kuinka paljon opiskelijalla pitäisi olla tähän mennessä opintopisteitä, kun lukukauden tavoite on 30 opintopistettä,
  • opiskelijan yhteenlaskettujen opintopisteiden määrän,
  • ilmoituksen, onko jäljessä tavoitteesta, tavoitteessa vai yli tavoitteen ("Olet jäljessä tavoitteesta.", "Olet tavoitteessa." tai "Olet edellä tavoitteesta.")
  • vielä tutkintoon vaadittavien pisteiden määrän, kun tutkinto on 210 opintopistettä.
Example output:
Anna lukukausien määrä: 3
Anna 1. lukukauden opintopisteesi: 40
Anna 2. lukukauden opintopisteesi: 27
Anna 3. lukukauden opintopisteesi: 30
Sinulla pitäisi olla tähän mennessä 90 opintopistettä.
Sinulla on 97 opintopistettä.
Olet edellä tavoitteesta.
Tutkinnosta puuttuu vielä 113 opintopistettä.

Opintopisteet.java

import java.util.Scanner;
import java.text.DecimalFormat;
import java.util.InputMismatchException;
public class Opintopisteet {
public static void main(String[] args) {
DecimalFormat r2 = new DecimalFormat("0.00");
Scanner syote_lukukausi = new Scanner(System.in);
int tutkinto_op = 210, lukukausi_op = 30;
System.out.print("Anna lukukausien määrä: ");
try {
int lukukaudet = syote_lukukausi.nextInt();
if (lukukaudet < 1 || lukukaudet > 8) {
System.err.println("Syötetty lukukausien määrä on virheellinen. Ohjelma keskeytetty");
System.exit(1);
}
String tavoite_lause = "";
int lukukausi_op_tavoite = 0, opiskelija_op_yht = 0;
for (int i = 1; i <= lukukaudet; i++) {
int max_tries = 4;
System.out.print("Anna " + i + ". lukukauden opintopisteesi: ");
while (max_tries > 0) {
try {
Scanner syote_op = new Scanner(System.in);
int opiskelija_op = syote_op.nextInt();
if (opiskelija_op < 0) {
throw new InputMismatchException();
} else {
opiskelija_op_yht += opiskelija_op;
}
lukukausi_op_tavoite += lukukausi_op;
break;
} catch (InputMismatchException e) {
System.err.println(
"Opintopisteiden täytyy olla positiivinen kokonaisluku\n" +
"Yritä uudelleen (kertoja jäljellä: " + (max_tries - 1) + ")"
);
max_tries -= 1;
continue;
}
}
if (max_tries == 0) {
System.err.println("Syöttämäsi opintopisteet ovat virheelliset. Ohjelma keskeytetty");
System.exit(1);
}
}
if (opiskelija_op_yht > lukukausi_op_tavoite) {
tavoite_lause = "Olet edellä tavoitteesta.";
} else if (opiskelija_op_yht == lukukausi_op_tavoite) {
tavoite_lause = "Olet tavoitteessa.";
} else {
tavoite_lause = "Olet jäljessä tavoitteesta.";
}
System.out.printf(
"Sinulla pitäisi olla tähän mennessä %s opintopistettä.\n" +
"Sinulla on %s opintopistettä.\n" +
"%s\n" + "Tutkinnosta puuttuu vielä %s opintopistettä.",
lukukausi_op_tavoite,
opiskelija_op_yht,
tavoite_lause,
(tutkinto_op - opiskelija_op_yht)
);
} catch (InputMismatchException e) {
System.err.println("Lukukauden täytyy olla kokonaisluku. Ohjelma keskeytetty");
System.exit(1);
}
}
}