R
rolf.huber
Gast
Hallo Zusammen
Ich muss für eine Prüfungsarbeit am Montag, einen Taschenrechner mit den Grundfunktionen plus Bruchrechnen und Prozentrechnen programmieren.
Die Grundfunktionen habe ich mit Hilfe eines Tutorials erstellt und versteh es soweit auch. Leider komme ich mit dem Bruch- und dem Prozentrechnen überhaupt nicht weiter.
Ich will absolut nicht auf Mitleid oder so machen aber wenn ich die Prüfung nicht schaffe, fall ich aus dem Studium.
Kann mir bitte jemand Helfen? Von mir aus können wir auch über eine entsprechende Bezahlung reden. Ich weiss, dass es für einen Programmierer eine absolut Einfache Sache ist. Ich bin nun mal keiner.
Vielen, Vielen Dank im Voraus.
Rolf
Hier, dass was ich schon habe:
Ich muss für eine Prüfungsarbeit am Montag, einen Taschenrechner mit den Grundfunktionen plus Bruchrechnen und Prozentrechnen programmieren.
Die Grundfunktionen habe ich mit Hilfe eines Tutorials erstellt und versteh es soweit auch. Leider komme ich mit dem Bruch- und dem Prozentrechnen überhaupt nicht weiter.
Ich will absolut nicht auf Mitleid oder so machen aber wenn ich die Prüfung nicht schaffe, fall ich aus dem Studium.
Kann mir bitte jemand Helfen? Von mir aus können wir auch über eine entsprechende Bezahlung reden. Ich weiss, dass es für einen Programmierer eine absolut Einfache Sache ist. Ich bin nun mal keiner.
Vielen, Vielen Dank im Voraus.
Rolf
Hier, dass was ich schon habe:
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.Font.*;
public class Calculator
{
public static void main(String[] args)
{
CalculatorFrame frame = new CalculatorFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
class CalculatorFrame extends JFrame
{
/**
*
*/
private static final long serialVersionUID = 1L;
public CalculatorFrame()
{
setTitle("Calculator");
CalculatorPanel panel = new CalculatorPanel();
add(panel);
pack();
}
}
class CalculatorPanel extends JPanel
{
/**
*
*/
private static final long serialVersionUID = 1L;
public CalculatorPanel()
{
setLayout(new BorderLayout());
result = 0;
lastCommand = "=";
start = true;
display = new JTextArea ("0",0,0);
display.setEnabled(false);
add(display, BorderLayout.NORTH);
ActionListener insert = new InsertAction();
ActionListener command = new CommandAction();
panel = new JPanel();
panel.setLayout(new GridLayout(4, 5));
addButton("7", insert);
addButton("8", insert);
addButton("9", insert);
addButton("/", command);
addButton("%", command);
addButton("4", insert);
addButton("5", insert);
addButton("6", insert);
addButton("x", command);
addButton("X/Y", command);
addButton("1", insert);
addButton("2", insert);
addButton("3", insert);
addButton("-", command);
addButton("+/-", command);
addButton("0", insert);
addButton(".", insert);
addButton("=", command);
addButton("+", command);
addButton("C", command);
add(panel, BorderLayout.CENTER);
}
private void addButton(String label, ActionListener listener)
{
JButton button = new JButton(label);
button.addActionListener(listener);
panel.add(button);
}
private class InsertAction implements ActionListener
{
public void actionPerformed(ActionEvent event)
{
String input = event.getActionCommand();
if (start)
{
display.setText("");
start = false;
}
if (input.equals(".") && display.getText().indexOf(".") != -1)
{
// do nothing
}
else
{
display.setText(display.getText() + input);
}
}
}
/**
* Diese Aktion führt den mit der Taste verbundenen
* Befehl aus.
*/
private class CommandAction implements ActionListener
{
public void actionPerformed(ActionEvent event)
{
String command = event.getActionCommand();
// Füge den Präfix "-" an den String an wenn
// es sich um den ersten Befehl handelt (negative Zahl)
if (command.equals("C"))
{
display.setText("0");
result = 0;
lastCommand = "=";
start = true;
}
else
{
if (command.equals("+/-"))
{
if (Double.parseDouble(display.getText()) > 0.0)
{
display.setText("-" + display.getText());
}
else
{
display.setText(display.getText().substring(1));
}
// result = -result;
}
else
{
if (start)
{
lastCommand = command;
result = Double.parseDouble(display.getText());
}
else
{
// Berechnung ausführen
calculate(Double.parseDouble(display.getText()));
lastCommand = command;
start = true;
}
}
}
}
}
/**
* Führt die anstehenden Berechnungen aus.
* @param x der mit dem vorherigen Ergebnis zu berechnende Wert
*/
public void calculate(double x)
{
if (lastCommand.equals("+")) result += x;
else if (lastCommand.equals("-")) result -= x;
else if (lastCommand.equals("x")) result *= x;
else if (lastCommand.equals("/")) result /= x;
else if (lastCommand.equals("%")) result = (result * x) /100;
else if (lastCommand.equals("=")) result = x;
display.setText("" + result);
}
private JTextArea display;
private JPanel panel;
private double result;
private String lastCommand;
private boolean start;
}