oppgave: named
This commit is contained in:
@@ -1,25 +1,65 @@
|
||||
package oving5;
|
||||
|
||||
import java.util.function.BinaryOperator;
|
||||
import java.util.Stack;
|
||||
import java.util.HashMap;
|
||||
|
||||
public class RPNCalc {
|
||||
private HashMap<Character, BinaryOperator<Double>> ops = new HashMap<Character, BinaryOperator<Double>>();
|
||||
private Stack<Double> stack = new Stack<>();
|
||||
|
||||
RPNCalc() {
|
||||
}
|
||||
|
||||
public void performOperation(char c) {
|
||||
boolean addOperator(char op, BinaryOperator<Double> f) {
|
||||
if (ops.containsKey(op) || f == null) {
|
||||
return false;
|
||||
}
|
||||
ops.put(op, f);
|
||||
return true;
|
||||
}
|
||||
|
||||
public void removeOperator(char c) {
|
||||
void push(double n) {
|
||||
stack.push(n);
|
||||
}
|
||||
|
||||
public boolean addOperator(char c, BinaryOperator<Double> d) {
|
||||
return false;
|
||||
double pop() {
|
||||
if (stack.isEmpty()) {
|
||||
return Double.NaN;
|
||||
}
|
||||
return stack.pop();
|
||||
}
|
||||
|
||||
public Double pop() {
|
||||
return 0.0;
|
||||
double peek(int i) {
|
||||
int id = stack.size() - i;
|
||||
if (id < 0 || id >= stack.size()) {
|
||||
return Double.NaN;
|
||||
}
|
||||
return stack.get(id);
|
||||
}
|
||||
|
||||
public void push(int i) {
|
||||
int getSize() {
|
||||
return stack.size();
|
||||
}
|
||||
|
||||
void performOperation(char c) {
|
||||
BinaryOperator<Double> op = ops.get(c);
|
||||
|
||||
if (op == null) {
|
||||
throw new UnsupportedOperationException("Invalid operator: " + c);
|
||||
}
|
||||
|
||||
if (stack.size() <= 1) {
|
||||
return;
|
||||
}
|
||||
double a = stack.pop();
|
||||
double b = stack.pop();
|
||||
|
||||
stack.push(op.apply(b, a));
|
||||
}
|
||||
|
||||
void removeOperator(char c) {
|
||||
ops.remove(c);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
10
src/main/java/oving5/named/Named.java
Normal file
10
src/main/java/oving5/named/Named.java
Normal file
@@ -0,0 +1,10 @@
|
||||
package oving5.named;
|
||||
|
||||
public interface Named {
|
||||
String getFullName();
|
||||
String getFamilyName();
|
||||
String getGivenName();
|
||||
void setGivenName(String name);
|
||||
void setFamilyName(String name);
|
||||
void setFullName(String name);
|
||||
}
|
||||
14
src/main/java/oving5/named/NamedComparator.java
Normal file
14
src/main/java/oving5/named/NamedComparator.java
Normal file
@@ -0,0 +1,14 @@
|
||||
package oving5.named;
|
||||
|
||||
import java.util.Comparator;
|
||||
|
||||
public class NamedComparator implements Comparator<Named> {
|
||||
@Override
|
||||
public int compare(Named named1, Named named2) {
|
||||
int a = named1.getFamilyName().compareTo(named2.getFamilyName());
|
||||
if (a == 0) {
|
||||
return named1.getGivenName().compareTo(named2.getGivenName());
|
||||
}
|
||||
return a;
|
||||
}
|
||||
}
|
||||
@@ -1,28 +1,43 @@
|
||||
package oving5.named;
|
||||
|
||||
public class Person1 {
|
||||
Person1(String s) {
|
||||
public class Person1 implements Named {
|
||||
private String givenName;
|
||||
private String familyName;
|
||||
private String fullName;
|
||||
|
||||
Person1(String givenName, String familyName) {
|
||||
setFullName(givenName + " " + familyName);
|
||||
setGivenName(givenName);
|
||||
setFamilyName(familyName);
|
||||
}
|
||||
|
||||
public void setFullName(String s) {
|
||||
public void setFullName(String fullName) {
|
||||
this.fullName = fullName;
|
||||
String[] l = fullName.split(" ");
|
||||
givenName = (l[0]);
|
||||
familyName = (l[1]);
|
||||
}
|
||||
|
||||
public void setFamilyName(String s) {
|
||||
public void setFamilyName(String familyName) {
|
||||
this.familyName = familyName;
|
||||
setFullName(givenName + " " + familyName);
|
||||
}
|
||||
|
||||
public void setGivenName(String s) {
|
||||
public void setGivenName(String givenName) {
|
||||
this.givenName = givenName;
|
||||
setFullName(givenName + " " + familyName);
|
||||
}
|
||||
|
||||
public String getFullName() {
|
||||
return "";
|
||||
return fullName;
|
||||
}
|
||||
|
||||
public String getFamilyName() {
|
||||
return "";
|
||||
return familyName;
|
||||
}
|
||||
|
||||
public String getGivenName() {
|
||||
return "";
|
||||
return givenName;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,28 +1,41 @@
|
||||
package oving5.named;
|
||||
|
||||
public class Person2 {
|
||||
Person2(String s) {
|
||||
public class Person2 implements Named {
|
||||
private String fullName;
|
||||
private String familyName;
|
||||
private String givenName;
|
||||
|
||||
Person2(String fullName) {
|
||||
setFullName(fullName);
|
||||
}
|
||||
|
||||
public void setFullName(String s) {
|
||||
public void setFullName(String fullName) {
|
||||
this.fullName = fullName;
|
||||
String[] l = fullName.split(" ");
|
||||
givenName = l[0];
|
||||
familyName = l[1];
|
||||
}
|
||||
|
||||
public void setFamilyName(String s) {
|
||||
public void setFamilyName(String familyName) {
|
||||
this.familyName = familyName;
|
||||
fullName = givenName + " " + familyName;
|
||||
}
|
||||
|
||||
public void setGivenName(String s) {
|
||||
public void setGivenName(String givenName) {
|
||||
this.givenName = givenName;
|
||||
fullName = givenName + " " + familyName;
|
||||
}
|
||||
|
||||
public String getFullName() {
|
||||
return "";
|
||||
return fullName;
|
||||
}
|
||||
|
||||
public String getFamilyName() {
|
||||
return "";
|
||||
return familyName;
|
||||
}
|
||||
|
||||
public String getGivenName() {
|
||||
return "";
|
||||
return givenName;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user