Skip to content
Snippets Groups Projects
Commit a8cbb278 authored by magnus's avatar magnus
Browse files

Add solutions for exercise lecture 2

parent ff00492f
No related branches found
No related tags found
No related merge requests found
......@@ -33,9 +33,9 @@ public class Car {
}
public static void main(String[] args) {
/*
* // Modell, Produsent, Registeringsnummer, Produksjonsår, Kilometerstand, Vekt
* Car car = new Car("S-MAX", "Ford", "AQ12345", 2019, 356.0);
*/
// Modell, Produsent, Registeringsnummer, Produksjonsår, Kilometerstand, Vekt
Car car = new Car("S-MAX", "Ford", "AQ12345", 2019, 356.0);
System.out.println(car);
}
}
package of2.lf;
package of2.kode;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
public class SelfServiceCheckout {
// Konstanter - del 1
public static final Collection<String> days = Arrays.asList("mon", "tue", "wed", "thu", "fri", "sat", "sun");
// Del 1
public static final List<String> days = Arrays.asList("mon", "tue", "wed", "thu", "fri", "sat", "sun");
// Felter / Tilstand
private String day;
private String phoneNumber;
// Konstruktør - del 3
// Del 2
public SelfServiceCheckout(String day) {
validateDay(day);
this.day = day;
}
// Registrer medlems-ID (telefonnummer)
public void registerPhoneNumber(String phoneNumer) {
if (this.phoneNumber != null) {
throw new IllegalStateException("Illegal operation");
}
if (isValidPhoneNumber(phoneNumer)) {
this.phoneNumber = phoneNumer;
} else {
throw new IllegalArgumentException("Not a valid phone number, please re-enter.");
private void validateDay(String day) {
if (!days.contains(day)) {
throw new IllegalArgumentException("Invalid weekday");
}
}
// Scanne varer
public void scanItem(String itemName, int amount, double price) {
double rebate = 0;
if (phoneNumber != null && day.equals("thu")) {
rebate = 0.1;
// Del 3
public void registerPhoneNumber(String phoneNumber) {
if (this.phoneNumber != null) {
/*
* Her kaster vi IllegalStateException og ikke IllegalArgumentException
* fordi argumentet i seg selv (telefonnummeret) kan være gyldig, men
* det er ikke en gyldig tilstand å sette et nytt telefonnummer på nytt
* når brukeren allerede har registrert et fra før-
*/
throw new IllegalStateException("Illegal operation: Phone number already registered");
}
System.out.println(amount + "x " + itemName + ": " + (price - (price * rebate)) + " kr");
}
// Valideringsmetoder - del 2
private void validateDay(String day) {
if (!days.contains(day)) {
throw new IllegalArgumentException("Invalid weekday");
if (!isValidPhoneNumber(phoneNumber)) {
throw new IllegalArgumentException("Not a valid phone number!");
}
this.phoneNumber = phoneNumber;
}
private boolean isValidPhoneNumber(String phoneNumber) {
......@@ -60,26 +54,37 @@ public class SelfServiceCheckout {
return false;
}
// Her kunne man også fjernet første tegn i charArrayen og sjekket resten
// Dette kan vi gjøre siden vi allerede har validert de første 4-5 tegnene
char[] chars = cleanedPhoneNumber.toCharArray();
boolean firstIndex = true;
for (char c : chars) {
if (!Character.isDigit(c)) {
return false;
if (c != '+' && !firstIndex) {
return false;
}
firstIndex = false;
}
}
return true;
}
// main-metode for å teste koden
public static void main(String[] args) {
// Del 4
public void scanItem(String itemName, int amount, double price) {
double rebate = 0.0;
if (phoneNumber != null && day.equals("thu")) {
rebate = 0.1;
}
System.out.println(amount + "x " + itemName + ": " + (price - (price * rebate)) + " kr");
}
// Testkode / main-metode
public static void main(String[] args) {
SelfServiceCheckout checkout = new SelfServiceCheckout("thu");
checkout.scanItem("Norvegia", 2, 120.0);
checkout.registerPhoneNumber("004742345678");
checkout.scanItem("Tomat", 3, 5.0);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment