De bedoeling is dat ik Strings kan invoeren, die of:
- slechts bestaan uit 1 token ( bijv. 'aaaa')
- een combinatie van tokes zijn met een bepaalde operator (C of R) ( bijv. '( aaaa C bbb )' , maar ook '( ( aaa R bb ) C zzz )' )
Om hier mee om te kunnen gaan is het de bedoeling om een Superklasse ( Ex ) en twee subklassen (SimEx en BinEx) te creeeren. SimEx regelt de 1 token Strings en BinEx de combinaties.
BinEx is een combinatie van een SimEx + operator + SimEx
Er is gebruik gemaakt van een scanner om een Expressie in te lezen.
Mijn programma waarin Ex.java wordt aangeroepen is dit:
import java.util.*;
public class Opdracht7_1{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
Ex exp = Ex.read(sc);
System.out.println(exp.eval().toString());
}
}
Mijn Ex.java ziet er nu zo uit:
import java.util.*;
public abstract class Ex{
//inhoud van klasse Ex
public abstract String eval();
public static Ex read(Scanner sc){
if(sc.next().equals("(")){
Ex s1 = read(sc);
char op1 = sc.next().charAt(0);
Ex s2 = read(sc);
sc.next();
BinEx bi = new BinEx(s1,op1,s2);
return bi;
}
else{
SimEx s3 = new SimEx(sc.next());
return s3;
}
}
}
//SIMEX KLASSE ---------------------------------
class SimEx extends Ex{
private String tekst;
public SimEx(String tk){
tekst = tk;
}
public String eval(){
return tekst;
}
public String toString(){
String res = "<SimEx(";
res = res + tekst + ")>";
return res;
}
}
//BINEX KLASSE -----------------------------------
class BinEx extends Ex{
private Ex operand1;
private Ex operand2;
private char operator;
public BinEx(Ex s1, char op, Ex s2){
operand1 = s1;
operand2 = s2;
operator = op;
}
public String eval(){
if( operator == 'C'){
return operand1.eval() + operand2.eval();
}
else{
return operand2.eval() + operand1.eval();
}
}
public String toString(){
String res = "<BinEx(";
res = res + operand1 + "," + operator + "," + operand2 + ")>";
return res;
}
}
Alles Compiled maar als ik uitvoer kan ik typen wat ik wil, er komt niks uit
![Knipoog ;)](./images/smilies/icon_e_wink.gif)
Ergens zit er een foutje in maar ik ben de draad even kwijt, heb al me boek erbij gepakt en op internet gezocht maar het wil niet echt. Wie o wie kan mij helpen?
Belangrijk: We moeten veel dingen nog op de primaire manier doen, we mogen dus geen fancy opties gebruiken om lappen script te skippen
![Razz :P](./images/smilies/icon_razz.gif)