Java-Schüler
2007-06-25, 22:18:52
Hallo !
Ich bin gerade dabei Java zu lernen und habe ein Programm, das ich zZ schreibe.
Es geht darum, dass man einen Rechenterm (zb 42+5*87/(3+7)...) gegeben bekommt und dieser in seine Bestandteile zerlegt werden soll.
Man bekommt den Term als String und ausgespuckt wird er dann als Vektor.
Vector<Token> tokenize() {
Vector<Token> tokens = new Vector<Token>();
int number[] = {'0','1','2','3','4','5','6','7','8','9'}; // Der zu scannende String wird jeweils mit diesen Strings bzw dem Array verglichen.
String operator = "+-*/";
String brack = "()";
for(int i=0; i<src.length(); i++){
// Scanne nach Zahlen
boolean detected = true;
Stack<Integer> counter = new Stack<Integer>();
while(detected){
for(int j=0; j<9; j++){
detected = false;
if(src.charAt(i) == number[j]){
counter.push(j);
detected = true;
i++;
}
}
}
if(!counter.empty()){
int zahl = 0;
int k=0;
while(!counter.empty()){
zahl = zahl + (counter.pop() * (int)Math.pow(10,k));
k++;
}
tokens.add(new Num(zahl));
}
// Scanne nach Rechenzeichen
for(int j = 0; j < operator.length(); j++){
if(src.charAt(i) == operator.charAt(j)){
tokens.add(new Op(operator.charAt(j)));
}
}
// Scanne nach Klammern
for(int j = 0; j < brack.length(); j++){
if(src.charAt(i) == brack.charAt(j)){
tokens.add(new Bracket(brack.charAt(j)));
}
}
}
return tokens;
}
Ich bin gerade dabei Java zu lernen und habe ein Programm, das ich zZ schreibe.
Es geht darum, dass man einen Rechenterm (zb 42+5*87/(3+7)...) gegeben bekommt und dieser in seine Bestandteile zerlegt werden soll.
Man bekommt den Term als String und ausgespuckt wird er dann als Vektor.
Vector<Token> tokenize() {
Vector<Token> tokens = new Vector<Token>();
int number[] = {'0','1','2','3','4','5','6','7','8','9'}; // Der zu scannende String wird jeweils mit diesen Strings bzw dem Array verglichen.
String operator = "+-*/";
String brack = "()";
for(int i=0; i<src.length(); i++){
// Scanne nach Zahlen
boolean detected = true;
Stack<Integer> counter = new Stack<Integer>();
while(detected){
for(int j=0; j<9; j++){
detected = false;
if(src.charAt(i) == number[j]){
counter.push(j);
detected = true;
i++;
}
}
}
if(!counter.empty()){
int zahl = 0;
int k=0;
while(!counter.empty()){
zahl = zahl + (counter.pop() * (int)Math.pow(10,k));
k++;
}
tokens.add(new Num(zahl));
}
// Scanne nach Rechenzeichen
for(int j = 0; j < operator.length(); j++){
if(src.charAt(i) == operator.charAt(j)){
tokens.add(new Op(operator.charAt(j)));
}
}
// Scanne nach Klammern
for(int j = 0; j < brack.length(); j++){
if(src.charAt(i) == brack.charAt(j)){
tokens.add(new Bracket(brack.charAt(j)));
}
}
}
return tokens;
}