Finde ich ja sympathisch erstmal, dass du diese Frage hier stellst.

Bin mitten in der Nacht aufgewacht und hab nicht mehr einschlafen können. Dann habe ich mich gefragt, was hier um 5 Uhr nachts auf einer deutschen Plattform abgeht... Und nun ja, ich wurde nicht enttäuscht. Leute mit Fußpilz und Liebesproblemen, das volle Programm.

...zur Antwort

Als ich in Istanbul war, hat nahezu niemand Euro angenommen. Erstmal am Flughafen ein bisschen Geld wechseln und dann später woanders ein besseren Wechselkurs suchen.

...zur Antwort
Eclipse Taschenrechner

Guten Tag ich versuche mit Eclipse Juno einen Taschenrechner zu erstellen bin aber mit meinem jetzigen Javawissen am Ende. Ich programmiere noch nicht lange Kann mir jmd. helfen???

Quellcode:

Start.java:

public class Start {

static Fenster f;

public static void main(String[] args) {

    f=new Fenster("Fensterprogramm",800,600);

}

}

Fenster.java:

import java.awt.Button; import java.awt.Frame; import java.awt.Label; import java.awt.TextField; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowEvent; import java.awt.event.WindowListener;

public class Fenster extends Frame implements WindowListener, ActionListener{

Button Ba,Bs,Bm,Bd,Erg;
TextField T1,T2,T3;
Label L0;

public Fenster(String titel, int breite, int hoehe) {

    this.setTitle(titel);
    this.setSize(breite,hoehe);
    this.setLayout(null);

    Ba = new Button("+");
    Ba.setLocation(150,30);
    Ba.setSize(20,20);
    this.add(Ba);

    Bs = new Button("-");
    Bs.setLocation(150,60);
    Bs.setSize(20,20);
    this.add(Bs);

    Bm = new Button("*");
    Bm.setLocation(150,90);
    Bm.setSize(20,20);
    this.add(Bm);

    Bd = new Button(":");
    Bd.setLocation(150,120);
    Bd.setSize(20,20);
    this.add(Bd);

    T1 = new TextField(20);
    T1.setLocation(50,75);
    T1.setSize(75,20);
    this.add(T1);

    T2 = new TextField(20);
    T2.setLocation(195,75);
    T2.setSize(75,20);
    this.add(T2);

    Erg = new Button("=");
    Erg.setLocation(295,75);
    Erg.setSize(20,20);
    this.add(Erg);




    this.addWindowListener(this);
    this.setVisible(true);

}

@Override
public void actionPerformed(ActionEvent e1) {
    if (e1.getSource() == Ba) {
        if (e1.getSource() == Erg) {
            System.out.println(Integer.parseInt(T1.getText()) + Integer.parseInt(T2.getText()));
        }
    }

}

@Override
public void windowActivated(WindowEvent arg0) {
    // TODO Auto-generated method stub

}

@Override
public void windowClosed(WindowEvent arg0) {
    // TODO Auto-generated method stub

}

@Override
public void windowClosing(WindowEvent arg0) {
    System.exit(0);

}

@Override
public void windowDeactivated(WindowEvent arg0) {
    // TODO Auto-generated method stub

}

@Override
public void windowDeiconified(WindowEvent arg0) {
    // TODO Auto-generated method stub

}

@Override
public void windowIconified(WindowEvent arg0) {
    // TODO Auto-generated method stub

}

@Override
public void windowOpened(WindowEvent arg0) {
    // TODO Auto-generated method stub

}

}

...zum Beitrag

Es gibt eine Methode mit der man Rechnungen in einem String berechnen kann:

   ScriptEngineManager factory = new ScriptEngineManager();
     ScriptEngine engine = factory.getEngineByName("JavaScript");
     try {
   System.out.println(engine.eval("4+3"));
  } catch (ScriptException e) {
   e.printStackTrace();

 Ich habe aber auch eine Klasse erstellt, die genauer berechnen kann:

StringCalculation.calculate("4+3");

package fixtures.maths;
import java.math.BigDecimal;
import java.math.MathContext;
public class StringCalculation {
 
    public static double calculate(String expression) {
        if(expression == null || expression.length() == 0) {
            return 0;
        }
        return calc(expression.replace(" ", "")).doubleValue();
    }
    private static BigDecimal calc(String expression) {
        if (expression.startsWith("(") && expression.endsWith(")")) {
            return calc(expression.substring(1, expression.length() - 1));
        }
        String[] containerArr = new String[]{expression};
        BigDecimal leftVal = getNextOperand(containerArr);
        expression = containerArr[0];
        if (expression.length() == 0) {
            return leftVal;
        }
        char operator = expression.charAt(0);
        expression = expression.substring(1);
        while (operator == '*' || operator == '/') {
            containerArr[0] = expression;
            BigDecimal rightVal = getNextOperand(containerArr);
            expression = containerArr[0];
            if (operator == '*') {
                leftVal = leftVal.multiply(rightVal, MathContext.DECIMAL128);
            } else {
                leftVal = leftVal.divide(rightVal, MathContext.DECIMAL128);
            }
            if (expression.length() > 0) {
                operator = expression.charAt(0);
                expression = expression.substring(1);
            } else {
                return leftVal;
            }
        }
        if (operator == '+') {
            return leftVal.add(calc(expression));
        } else {
            return leftVal.subtract(calc(expression));
        }
    }
    private static BigDecimal getNextOperand(String[] exp){
        BigDecimal res;
        if (exp[0].startsWith("(")) {
            int open = 1;
            int i = 1;
            while (open != 0) {
                if (exp[0].charAt(i) == '(') {
                    open++;
                } else if (exp[0].charAt(i) == ')') {
                    open--;
                }
                i++;
            }
            res = calc(exp[0].substring(1, i - 1));
            exp[0] = exp[0].substring(i);
        } else {
            int i = 1;
            if (exp[0].charAt(0) == '-') {
                i++;
            }
            while (exp[0].length() > i && isNumber((int) exp[0].charAt(i))) {
                i++;
            }
            res = new BigDecimal(exp[0].substring(0, i));
            exp[0] = exp[0].substring(i);
        }
        return res;
    }
    private static boolean isNumber(int c) {
        int zero = (int) '0';
        int nine = (int) '9';
        return (c >= zero && c <= nine) || c =='.';
    }
}
...zur Antwort
Weitere Inhalte können nur Nutzer sehen, die bei uns eingeloggt sind.