hallo,
habe die aufgabe ein proggie zu bauen, in dem Infix zu Postfix-Notations mittels selbstgeschiebenen Stack (der geht) umgeformt werden soll.
aber irgendwie haut das nicht hin.
ich übergebe einen mathematischen ausdruck mittels args.
3 + 3 wird zu 3 3 +
sobald ich aber ne klammer rein hau. kackt er ab.
hier ma der code:
ich weiß nich mehr weiter ... hänge da schon stunden davor und meine blockade löst sich nicht.... wer kann mir helfen.?
mfg
habe die aufgabe ein proggie zu bauen, in dem Infix zu Postfix-Notations mittels selbstgeschiebenen Stack (der geht) umgeformt werden soll.
aber irgendwie haut das nicht hin.
ich übergebe einen mathematischen ausdruck mittels args.
3 + 3 wird zu 3 3 +
sobald ich aber ne klammer rein hau. kackt er ab.
hier ma der code:
Code:
import java.*;
import java.io.IOException;
import java.math.*;
public class aufgabe1 {
public static Stack stack=new Stack();
public static int zaehleZeichen(String [] s){
int zeichen=0;
int i=0;
while (i<s.length){
if ((s[i]=="(")||(s[i]==")")){
}
else {
zeichen=zeichen+1;
}
i=i+1;
}
return zeichen;
}
public static String [] upn(String[] str){
String[] feld=new String[zaehleZeichen(str)];
int i=0; //für str
int y=0; //für feld
while (i<str.length){
if ((str[i].equals("*")==true) || (str[i].equals("/")==true) || (str[i].equals("-")==true) || (str[i].equals("+")==true)||(str[i].equals("(")==true)||(str[i].equals(")")==true)){
if (str.equals("(")==true){
stack.push(str[i]);
System.out.println("Klammer ("+stack.peek());
}
if ((str[i].equals("*")==true)|| (str[i].equals("/")==true)){
stack.push(str[i]);
System.out.println("operatoren * / "+stack.peek());
}
if ((str[i].equals("-")==true)||(str[i].equals("+")==true)){
while ((stack.isEmpty()==false)&&((stack.peek().equals("*")==true)|| (stack.peek().equals("/")==true))){
feld[y]=stack.pop();
y=y+1;
}
}
stack.push(str[i]);
System.out.println("operatoren - + " +stack.peek());
}
if (str.equals(")")==true){
while ((stack.peek()!="(")&&(y<feld.length)&&(stack.isEmpty()==false)){
System.out.println("klammer ( ins feld"+stack.peek());
feld[y]=stack.pop();
y=y+1;
}
if ((stack.peek()=="(")){
System.out.println("klammer ( wird entfernt)"+stack.peek());
stack.pop();
}
}
else{
feld[y]=str[i];
}
y=y+1;
i=i+1;
}
while (stack.isEmpty()==false){
System.out.println("zahlen übergabe" +stack.peek());
feld[y]=stack.pop();
y=y+1;
}
return feld;
}
public static String feldzustring(String []f){
int i=0;
String ausgabe="";
while (i<f.length){
ausgabe=ausgabe+f[i];
i=i+1;
}
return ausgabe;
}
public static void main(String[] args) throws IOException{
String [] huhu;
huhu=upn(args);
System.out.println(feldzustring(huhu));
}
}
ich weiß nich mehr weiter ... hänge da schon stunden davor und meine blockade löst sich nicht.... wer kann mir helfen.?
mfg