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 { ...@@ -33,9 +33,9 @@ public class Car {
} }
public static void main(String[] args) { public static void main(String[] args) {
/*
* // Modell, Produsent, Registeringsnummer, Produksjonsår, Kilometerstand, Vekt // Modell, Produsent, Registeringsnummer, Produksjonsår, Kilometerstand, Vekt
* Car car = new Car("S-MAX", "Ford", "AQ12345", 2019, 356.0); 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.Arrays;
import java.util.Collection; import java.util.List;
public class SelfServiceCheckout { public class SelfServiceCheckout {
// Konstanter - del 1 // Del 1
public static final Collection<String> days = Arrays.asList("mon", "tue", "wed", "thu", "fri", "sat", "sun"); public static final List<String> days = Arrays.asList("mon", "tue", "wed", "thu", "fri", "sat", "sun");
// Felter / Tilstand
private String day; private String day;
private String phoneNumber; private String phoneNumber;
// Konstruktør - del 3 // Del 2
public SelfServiceCheckout(String day) { public SelfServiceCheckout(String day) {
validateDay(day); validateDay(day);
this.day = day; this.day = day;
} }
// Registrer medlems-ID (telefonnummer) private void validateDay(String day) {
public void registerPhoneNumber(String phoneNumer) { if (!days.contains(day)) {
if (this.phoneNumber != null) { throw new IllegalArgumentException("Invalid weekday");
throw new IllegalStateException("Illegal operation");
}
if (isValidPhoneNumber(phoneNumer)) {
this.phoneNumber = phoneNumer;
} else {
throw new IllegalArgumentException("Not a valid phone number, please re-enter.");
} }
} }
// Scanne varer // Del 3
public void scanItem(String itemName, int amount, double price) { public void registerPhoneNumber(String phoneNumber) {
double rebate = 0; if (this.phoneNumber != null) {
if (phoneNumber != null && day.equals("thu")) { /*
rebate = 0.1; * 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"); if (!isValidPhoneNumber(phoneNumber)) {
} throw new IllegalArgumentException("Not a valid phone number!");
// Valideringsmetoder - del 2
private void validateDay(String day) {
if (!days.contains(day)) {
throw new IllegalArgumentException("Invalid weekday");
} }
this.phoneNumber = phoneNumber;
} }
private boolean isValidPhoneNumber(String phoneNumber) { private boolean isValidPhoneNumber(String phoneNumber) {
...@@ -60,26 +54,37 @@ public class SelfServiceCheckout { ...@@ -60,26 +54,37 @@ public class SelfServiceCheckout {
return false; 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(); char[] chars = cleanedPhoneNumber.toCharArray();
boolean firstIndex = true;
for (char c : chars) { for (char c : chars) {
if (!Character.isDigit(c)) { if (!Character.isDigit(c)) {
return false; if (c != '+' && !firstIndex) {
return false;
}
firstIndex = false;
} }
} }
return true; return true;
} }
// main-metode for å teste koden // Del 4
public static void main(String[] args) { 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"); SelfServiceCheckout checkout = new SelfServiceCheckout("thu");
checkout.scanItem("Norvegia", 2, 120.0); checkout.scanItem("Norvegia", 2, 120.0);
checkout.registerPhoneNumber("004742345678"); checkout.registerPhoneNumber("004742345678");
checkout.scanItem("Tomat", 3, 5.0); 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