# Hexadezimal Zahlen addieren



## venomlol (7. Aug 2009)

hi ho 

ich hab ein problem und zwar habe ich mir einen taschenrechner prgorammiert und will jetzt die fukntion hinzufügen das man hexadezimal zahlen addieren kann . die umrechnung von hexa zu dezimal funktioniert nur das addieren will iwi nicht :/ . 
vllt kann mir ja jemand helfen . 

hier is mal der Quellcode:

```
/**
 * @(#)taschenrechner.java
 *
 * taschenrechner application
 *
 * @author 
 * @version 1.00 2009/8/4
 */
 
//Taschenrechner
import java.awt.*;
import java.awt.event.*;
import java.lang.*;
import java.util.Scanner;

import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class taschenrechner extends Frame

{
JButton A,B,C,D,E,F,Dez,Hexa,Beenden,Info,Taste_0,Taste_1,Taste_2, Taste_3,Taste_4,Taste_5 , Taste_6, Taste_7, Taste_8,Taste_9,
Taste_d, Taste_c, Taste_m,Taste_p, Taste_w, Taste_g; 
double Speicher =0; 
double Zwischenwert =0; 
boolean Operand = false; 
char akt_Operation ='k'; 
boolean neue_Zahl = true; 
boolean Vorkomma = true; 
boolean hexazahl = true ;
String hexhex ;
JTextField Anz; 
double Operand1, Operand2;

class Mein_WindowListener extends WindowAdapter 
{
public void windowClosing (WindowEvent e) 
{ 
System.exit(0); 
}

}


taschenrechner(String titel)
{
super(titel);
JFrame f = new JFrame( "Taschenrechner" );     
f.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );        
f.setSize(200,300) ;    
f.setLayout(new GridLayout(2,5));




//Panel erstellen	

JPanel P1 = new JPanel();
P1.setLayout( new GridLayout(2,4));
f.add (P1);

JPanel P2 = new JPanel();
P2.setLayout( new GridLayout(5,4));
          	
          
JPanel P3 = new JPanel();
P3.setLayout( new GridLayout(0,1,1,1));
    
JPanel P4 = new JPanel();
P4.setLayout( new GridLayout(0,3,10,4));
f.add (P4);
    

P1.add (P3);
P1.add (P4);
f.add( P2);


Anz = new JTextField(10); // 10 Zeichen breit
Anz.setEditable (false); //nicht editierbar
Anz.setText("0.0");




Beenden=new JButton ("");
Beenden.setIcon(new ImageIcon ("exit.png"));
Taste_0 = new JButton("0");
Taste_1 = new JButton("1");
Taste_2 = new JButton("2");
Taste_3 = new JButton("3");
Taste_4 = new JButton("4");
Taste_5 = new JButton("5");
Taste_6 = new JButton("6");
Taste_7 = new JButton("7");
Taste_8 = new JButton("8");
Taste_9 = new JButton("9");
Taste_d = new JButton("/");
Taste_c = new JButton("clr");
Taste_m = new JButton("*");
Taste_p = new JButton("+");
Taste_w = new JButton("-");
Taste_g = new JButton("=");
Info    = new JButton("=");
Hexa    = new JButton("Hex");
Dez		= new JButton("Dez");
A		= new JButton("A");
B		= new JButton("B");
C		= new JButton("C");
D		= new JButton("D");
E		= new JButton("E");
F		= new JButton("F");

JOptionPane.showMessageDialog(null, "© Gyula Fügedi 2009", "Copyright Taschenrechner®", JOptionPane.INFORMATION_MESSAGE);

		

P3.add(Anz); 



P4.add(Taste_w);
P4.add(Taste_c);
P2.add(Taste_1);
P2.add(Taste_2);
P2.add(Taste_3);
P2.add(Taste_4);
P2.add(Taste_5);
P2.add(Taste_6);
P2.add(Taste_7);
P2.add(Taste_8);
P2.add(Taste_9);
P2.add(Taste_0);
P4.add(Taste_d);
P4.add(Taste_m);
P4.add(Taste_p);
P4.add(Taste_g);
P4.add(Dez);
P4.add(Hexa);
P2.add(A);
P2.add(B);
P2.add(C);
P2.add(D);
P2.add(E);
P2.add(F);
P4.add(new JLabel(""));



f.setVisible(true);
addWindowListener(new Mein_WindowListener());


Taste_0.addActionListener(new drücken());
Taste_1.addActionListener(new drücken());
Taste_2.addActionListener(new drücken());
Taste_3.addActionListener(new drücken());
Taste_4.addActionListener(new drücken());
Taste_5.addActionListener(new drücken());
Taste_6.addActionListener(new drücken());
Taste_7.addActionListener(new drücken());
Taste_8.addActionListener(new drücken());
Taste_9.addActionListener(new drücken());
Taste_d.addActionListener(new drücken());
Taste_c.addActionListener(new drücken());
Taste_m.addActionListener(new drücken());
Taste_p.addActionListener(new drücken());
Taste_w.addActionListener(new drücken());
Taste_g.addActionListener(new drücken());
Beenden.addActionListener(new drücken());
Hexa.addActionListener(new Umrechnen());
Dez.addActionListener(new Rückrechnen());
A.addActionListener(new drücken());
B.addActionListener(new drücken());
C.addActionListener(new drücken());
D.addActionListener(new drücken());
E.addActionListener(new drücken());
F.addActionListener(new drücken());
}

public class Rückrechnen implements ActionListener
{

public void actionPerformed(ActionEvent o)
{ 
	String hexString="ff";
	hexString= Anz.getText();
	int i = Integer.valueOf(hexString, 16).intValue();
	Anz.setText(Integer.toString(i));
	hexazahl= true ;
	
}

}
class Umrechnen implements ActionListener
{

public void actionPerformed(ActionEvent o)
{ 
	int zahl = 0;
    String hexazahl ="";
 
    zahl = Integer.valueOf(Anz.getText()).intValue();
	do { 
	    if ((zahl%16)< 10) { hexazahl = zahl%16 + hexazahl; }
	    if ((zahl%16)==10) { hexazahl = "A" + hexazahl; } 
	    if ((zahl%16)==11) { hexazahl = "B" + hexazahl; } 
	    if ((zahl%16)==12) { hexazahl = "C" + hexazahl; } 
	    if ((zahl%16)==13) { hexazahl = "D" + hexazahl; } 
	    if ((zahl%16)==14) { hexazahl = "E" + hexazahl; } 
	    if ((zahl%16)==15) { hexazahl = "F" + hexazahl; }
	    zahl = zahl/16; 
	} while (zahl > 0); 
	
    Anz.setText(hexazahl);  

}
	
}

class drücken implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
String str, akt_Text;
int index;
char Zeichen;
double Wert;


str = e.getActionCommand();

Zeichen = str.charAt(0);

switch(Zeichen)
{



case 'c' : 
Anz.setText("0.0");
Speicher =0;
Zwischenwert =0;
akt_Operation ='k';
Operand = false;
Vorkomma = true;
neue_Zahl = true;
break;


case '+':
case '-':
case '*':
case '/':
case '%':
if(akt_Operation =='k'){ 
Zwischenwert = Double.valueOf(Anz.getText()).doubleValue();
Operand=true;
akt_Operation=Zeichen;
neue_Zahl=true;
break;
}

if(Operand == true){
Berechnung_ausführen();
neue_Zahl=true;
Vorkomma=true;
akt_Operation=Zeichen;
break;
}

case '=':
if(akt_Operation!='k' && Operand==true){
	{
		Operand1=Double.valueOf(Zwischenwert).doubleValue(); ;
		Operand2=Double.valueOf(Anz.getText()).doubleValue();
	}


Berechnung_ausführen();
neue_Zahl=true;
Vorkomma=true;
akt_Operation=Zeichen='k';
Operand=false;
break;
}
case '.':
if(neue_Zahl == true){

Anz.setText("0");
neue_Zahl=false;
}
if(Vorkomma==true){
Vorkomma=false;
akt_Text=Anz.getText();
akt_Text += ".";
Anz.setText(akt_Text);
}
break;

default: 

if(neue_Zahl==true)
{
neue_Zahl=false;
Anz.setText("");
}

akt_Text=Anz.getText();
Anz.setText("");


Anz.setText(akt_Text + Zeichen);
break;
}

}
}
void Berechnung_ausführen()
{
double Operand1, Operand2;
double Ergebnis = 0;

Operand1=Zwischenwert;
Operand2=Double.valueOf(Anz.getText()).doubleValue();
int zahl;

switch(akt_Operation)
{

case '+': Rückrechnen(hexhex); Anz.setText("");
		Ergebnis = Operand1 + Operand2;
if (hexazahl = true ){

	
}
break;

case '-': Ergebnis = Operand1 - Operand2;
break;

case '*': Ergebnis = Operand1 * Operand2;
break;

case '%': Ergebnis = Operand1 % Operand2;

case '/': if(Operand2!=0)
Ergebnis = Operand1 / Operand2;

else
Ergebnis = 0;
break;

}


Zwischenwert = Ergebnis;
Anz.setText(Double.toString(Ergebnis));
}



private int Rückrechnen(String hexazahl) {
	// TODO Auto-generated method stub
	String hexString="ff";
	hexString= Anz.getText();
	int i = Integer.valueOf(hexString, 16).intValue();
	Anz.setText(Integer.toString(i));
	return(i);
}



public static void main(String args[])
{
taschenrechner Fenster = new taschenrechner("Taschenrechner");
}}
```

lg Venomlol


----------



## faetzminator (7. Aug 2009)

Wie wärs, wenn du die Zahlen intern in Dezimalzahlen umrechnest (btw, das können bereits die Klassen der Java SE) und mit diesen rechnest?


----------



## venomlol (7. Aug 2009)

huhu 

 also auf die idee kam ich ja auch schon *-* , aber ich soll ich das in der case anweisug für jede operation tun ? ( wie is der interne befehl dafür ?? ) .


----------



## faetzminator (7. Aug 2009)

Integer.toHexString(): Integer (Java 2 Platform SE 5.0)
Integer.parseInt(): Integer (Java 2 Platform SE 5.0)


----------



## Ein Keks (8. Aug 2009)

kleine anmerkung: 
Klassennamen werden groß und variablennamen klein geschrieben.
Desweiteren wieso verwendest du eigentlich keine arrays? wenigstens für die normalen zahlen-tasten wäre das doch sehr sinnvoll schon allein weil du dann mit schleifen arbeiten könntest, was die code länge deutlich verkürzen würde ( und das ganze vorallem übersichtlicher macht).


----------



## venomlol (10. Aug 2009)

huhu nochmal , ich saß jetzt den ganzen sonntag dran aba ich kriegs nich hin .. ich stell mich wohl doch zu dumm .... aba ersma danke für die hilfestellungen  . 

lg


----------



## icarus2 (10. Aug 2009)

Du müsstest dann schon sagen was genau nicht geht. Oder etwas Code posten wo du denkst, dass etwas nicht funktioniert.

Sonst können wir dir nicht helfen ;-)


----------



## venomlol (11. Aug 2009)

```
/**
 * @(#)taschenrechner.java
 *
 * taschenrechner application
 *
 * @author 
 * @version 1.00 2009/8/4
 */
 
//Taschenrechner
import java.awt.*;
import java.awt.event.*;
import java.lang.*;
import java.util.Scanner;

import javax.swing.ButtonGroup;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JRadioButtonMenuItem;
import javax.swing.JTextField;
import javax.swing.KeyStroke;
import java.lang.Math;

public class taschenrechner extends Frame

{
JButton Taste_wechsel,PI,sin,cos,tan,log,h3,h,quadrat,Wurzel,A,B,C,D,E,F,Dez,Hexa,Beenden,Info,Taste_0,Taste_1,Taste_2, Taste_3,Taste_4,Taste_5 , Taste_6, Taste_7, Taste_8,Taste_9,
Taste_d, Taste_c, Taste_m,Taste_p, Taste_w, Taste_g; 
double Speicher =0; 
double Zwischenwert =0; 
boolean Operand = false; 
char akt_Operation ='k'; 
boolean neue_Zahl = true; 
boolean Vorkomma = true; 
boolean hexazahl = true ;
String hexhex ;
JTextField Anz; 
double Operand1, Operand2;
JMenuBar menuBar;
JMenu menu, submenu;
JMenuItem menuItem;
JRadioButtonMenuItem rbMenuItem1,rbMenuItem2;
String op1,op2;
int durchlaufen;

class Mein_WindowListener extends WindowAdapter 
{
public void windowClosing (WindowEvent e) 
{ 
System.exit(0); 
}

}


taschenrechner(String titel)
{
super(titel);
JFrame f = new JFrame( "Taschenrechner" );     
f.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );        
f.setSize(200,400) ;    
f.setLayout(new GridLayout(2,5));




//Panel erstellen	

JPanel P1 = new JPanel();
P1.setLayout( new GridLayout(2,4));
f.add (P1);

JPanel P2 = new JPanel();
P2.setLayout( new GridLayout(10,4));
          	
          
JPanel P3 = new JPanel();
P3.setLayout( new GridLayout(0,1,1,1));
    
JPanel P4 = new JPanel();
P4.setLayout( new GridLayout(0,3,10,4));
f.add (P4);

JPanel P5 = new JPanel ();
P5.setLayout(new GridLayout(1,1));
    

P1.add (P3);
P1.add (P4);
P2.add(P5);
f.add( P2);


Anz = new JTextField(10); // 10 Zeichen breit
Anz.setEditable (false); //nicht editierbar
Anz.setText("0.0");
menuBar = new JMenuBar();
menu = new JMenu("Taschenrechnerart Wählen");
menu.setMnemonic(KeyEvent.VK_A);
menu.getAccessibleContext().setAccessibleDescription(
        "The only menu in this program that has menu items");
menuBar.add(menu);


P3.add(menuBar);

menu.addSeparator();
ButtonGroup group = new ButtonGroup();
rbMenuItem1 = new JRadioButtonMenuItem("Standart");
rbMenuItem1.setSelected(true);
rbMenuItem1.setMnemonic(KeyEvent.VK_R);
group.add(rbMenuItem1);
menu.add(rbMenuItem1);

rbMenuItem2 = new JRadioButtonMenuItem("Wissenschaftlich");
rbMenuItem2.setMnemonic(KeyEvent.VK_O);
group.add(rbMenuItem2);
menu.add(rbMenuItem2);



Beenden=new JButton ("");
Beenden.setIcon(new ImageIcon ("exit.png"));

PI = new JButton("Pi");
sin = new JButton("sin");
cos = new JButton("cos");
tan = new JButton("tan");
log = new JButton("log");
h3 = new JButton ( "x³") ;
h = new JButton ("h");
h.setIcon(new ImageIcon( "variable.png"));
Taste_0 = new JButton("0");
Taste_1 = new JButton("1");
Taste_2 = new JButton("2");
Taste_3 = new JButton("3");
Taste_4 = new JButton("4");
Taste_5 = new JButton("5");
Taste_6 = new JButton("6");
Taste_7 = new JButton("7");
Taste_8 = new JButton("8");
Taste_9 = new JButton("9");
Taste_d = new JButton("/");
Taste_c = new JButton("clr");
Taste_m = new JButton("*");
Taste_p = new JButton("+");
Taste_w = new JButton("-");
Taste_g = new JButton("=");
Info    = new JButton("=");
Hexa    = new JButton("x");
Dez		= new JButton("Dez");
A		= new JButton("A");
B		= new JButton("B");
C		= new JButton("C");
D		= new JButton("D");
E		= new JButton("E");
F		= new JButton("F");
Taste_wechsel = new JButton("+/-");

JOptionPane.showMessageDialog(null, "© Gyula Fügedi 2009", "Copyright Taschenrechner®", JOptionPane.INFORMATION_MESSAGE);

		

P3.add(Anz); 



P4.add(Taste_w);
P4.add(Taste_c);
P2.add(Taste_1);
P2.add(Taste_2);
P2.add(Taste_3);
P2.add(Taste_4);
P2.add(Taste_5);
P2.add(Taste_6);
P2.add(Taste_7);
P2.add(Taste_8);
P2.add(Taste_9);
P2.add(Taste_0);
P4.add(Taste_d);
P4.add(Taste_m);
P4.add(Taste_p);
P4.add(Taste_g);
P2.add(new JLabel(""));
P2.add(A);
P2.add(B);
P2.add(C);
P2.add(D);
P2.add(E);
P2.add(F);
P4.add(new JLabel(""));
P2.add(new JLabel(""));
P2.add(Dez);
P2.add(Hexa);
P2.add(PI);
P2.add(sin);
P2.add(cos);
P2.add(tan);
P2.add(log);
P2.add(h3);
P2.add(h);
P2.add(Taste_wechsel);
A.setEnabled(false);
B.setEnabled(false);
C.setEnabled(false);
D.setEnabled(false);
E.setEnabled(false);
F.setEnabled(false);
Hexa.setEnabled(false);
Dez.setEnabled(false);	
PI.setEnabled(false);
sin.setEnabled(false);
cos.setEnabled(false);
tan.setEnabled(false);
log.setEnabled(false);
h3.setEnabled(false);
h.setEnabled(false);



f.setVisible(true);
addWindowListener(new Mein_WindowListener());


Taste_0.addActionListener(new drücken());
Taste_1.addActionListener(new drücken());
Taste_2.addActionListener(new drücken());
Taste_3.addActionListener(new drücken());
Taste_4.addActionListener(new drücken());
Taste_5.addActionListener(new drücken());
Taste_6.addActionListener(new drücken());
Taste_7.addActionListener(new drücken());
Taste_8.addActionListener(new drücken());
Taste_9.addActionListener(new drücken());
Taste_d.addActionListener(new drücken());
Taste_c.addActionListener(new drücken());
Taste_m.addActionListener(new drücken());
Taste_p.addActionListener(new drücken());
Taste_w.addActionListener(new drücken());
Taste_g.addActionListener(new drücken());
Beenden.addActionListener(new drücken());
Hexa.addActionListener(new Umrechnen());
Dez.addActionListener(new Rückrechnen());
A.addActionListener(new drücken());
B.addActionListener(new drücken());
C.addActionListener(new drücken());
D.addActionListener(new drücken());
E.addActionListener(new drücken());
F.addActionListener(new drücken());
rbMenuItem1.addActionListener(new auswahl());
rbMenuItem2.addActionListener(new auswahl1());
PI.addActionListener(new pibere());
sin.addActionListener(new sinbere());
cos.addActionListener(new cosbere());
tan.addActionListener(new tanbere());
log.addActionListener(new logbere());
h3.addActionListener(new h3bere());
h.addActionListener(new drücken());
Taste_wechsel.addActionListener(new drücken());
}

public class logbere implements ActionListener {

	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
	
	
	double zahl = Integer.valueOf(Anz.getText()).intValue();
double zahl2 = Math.log(zahl);
String s = String.valueOf(zahl2);
Anz.setText(s);
	}
}

public class cosbere implements ActionListener {

	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		double zahl = Integer.valueOf(Anz.getText()).intValue();
		double zahl2 = Math.cos(zahl);
		String s = String.valueOf(zahl2);
		Anz.setText(s);
	}

}


public class hvbere implements ActionListener {

	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		Zwischenwert = Integer.valueOf(Anz.getText()).intValue();
		Anz.setText("");
		akt_Operation='h';
	}

}


public class h3bere implements ActionListener {

	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		double zahl = Integer.valueOf(Anz.getText()).intValue();
		double zahl2 = Math.pow(zahl,3);
		String s = String.valueOf(zahl2);
		Anz.setText(s);
	}

}


public class tanbere implements ActionListener {

	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		double zahl = Integer.valueOf(Anz.getText()).intValue();
		double zahl2 = Math.tan(zahl);
		String s = String.valueOf(zahl2);
		Anz.setText(s);
	}

}


public class sinbere implements ActionListener {

	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		double zahl = Integer.valueOf(Anz.getText()).intValue();
		double zahl2 = Math.sin(zahl);
		String s = String.valueOf(zahl2);
		Anz.setText(s);
	}

}



public class pibere implements ActionListener {

	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		Anz.setText("3.141592653589793238");
	}


}

public class auswahl1 implements ActionListener {
	public void actionPerformed(ActionEvent o)
	{
		A.setEnabled(true);
		B.setEnabled(true);
		C.setEnabled(true);
		D.setEnabled(true);
		E.setEnabled(true);
		F.setEnabled(true);
		Hexa.setEnabled(true);
		Dez.setEnabled(true);	
		PI.setEnabled(true);
		sin.setEnabled(true);
		cos.setEnabled(true);
		tan.setEnabled(true);
		log.setEnabled(true);
		h3.setEnabled(true);
		h.setEnabled(true);
	}
}


public class auswahl implements ActionListener {
	public void actionPerformed(ActionEvent o)
	{
		A.setEnabled(false);
		B.setEnabled(false);
		C.setEnabled(false);
		D.setEnabled(false);
		E.setEnabled(false);
		F.setEnabled(false);
		Hexa.setEnabled(false);
		Dez.setEnabled(false);	
		PI.setEnabled(false);
		sin.setEnabled(false);
		cos.setEnabled(false);
		tan.setEnabled(false);
		log.setEnabled(false);
		h3.setEnabled(false);
		h.setEnabled(false);
	}
}


public class Rückrechnen implements ActionListener
{

public void actionPerformed(ActionEvent o)
{ 
	String hexString="ff";
	hexString= Anz.getText();
	int i = Integer.valueOf(hexString, 16).intValue();
	Anz.setText(Integer.toString(i));
	hexazahl= true ;
	
}

}
class Umrechnen implements ActionListener
{

public void actionPerformed(ActionEvent o)
{ 
	int zahl = 0;
    String hexazahl ="";

    zahl = Integer.valueOf(Anz.getText()).intValue();
	do { 
	    if ((zahl%16)< 10) { hexazahl = zahl%16 + hexazahl; }
	    if ((zahl%16)==10) { hexazahl = "A" + hexazahl; } 
	    if ((zahl%16)==11) { hexazahl = "B" + hexazahl; } 
	    if ((zahl%16)==12) { hexazahl = "C" + hexazahl; } 
	    if ((zahl%16)==13) { hexazahl = "D" + hexazahl; } 
	    if ((zahl%16)==14) { hexazahl = "E" + hexazahl; } 
	    if ((zahl%16)==15) { hexazahl = "F" + hexazahl; }
	    zahl = zahl/16; 
	} while (zahl > 0); 
	akt_Operation = 'x';
    Anz.setText(hexazahl);  
    Anz.setText("");

}
	
}

class drücken implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
String str, akt_Text;
int index;
char Zeichen;
double Wert;


str = e.getActionCommand();

Zeichen = str.charAt(0);


if(str.equals("+/-"))
{
//Vorzeichen wechseln

Wert=Double.valueOf(Anz.getText()).doubleValue();
Wert*=-1;
Anz.setText(Double.toString(Wert));
return;
}
switch(Zeichen)


{



case 'c' : 
Anz.setText("0.0");
Speicher =0;
Zwischenwert =0;
akt_Operation ='k';
Operand = false;
Vorkomma = true;
neue_Zahl = true;
break;


case '+':
case '-':
case '*':
case '/':
case '%':
case 'h':
case 'x':
if(akt_Operation =='k'){ 
Zwischenwert = Double.valueOf(Anz.getText()).doubleValue();
Operand=true;
akt_Operation=Zeichen;
neue_Zahl=true;
break;
}

if(Operand == true){
Berechnung_ausführen();
neue_Zahl=true;
Vorkomma=true;
akt_Operation=Zeichen;
break;
}

case '=':
if(akt_Operation!='k' && Operand==true){
	{
		Operand1=Double.valueOf(Zwischenwert).doubleValue(); ;
		Operand2=Double.valueOf(Anz.getText()).doubleValue();
	}


Berechnung_ausführen();
neue_Zahl=true;
Vorkomma=true;
akt_Operation=Zeichen='k';
Operand=false;
break;
}


case '.':
if(neue_Zahl == true){

Anz.setText("0");
neue_Zahl=false;
}
if(Vorkomma==true){
Vorkomma=false;
akt_Text=Anz.getText();
akt_Text += ".";
Anz.setText(akt_Text);
}
break;

default: 

if(neue_Zahl==true)
{
neue_Zahl=false;
Anz.setText("");
}

akt_Text=Anz.getText();
Anz.setText("");


Anz.setText(akt_Text + Zeichen);
break;
}

}
}
void Berechnung_ausführen()
{
double Operand1, Operand2;
double Ergebnis = 0;
if (akt_Operation=='x'){
	 Operand1= Zwischenwert ;
	 op1= Double.toHexString(Operand1) ;
	 Operand2=Double.valueOf(Anz.getText()).doubleValue();
	 op2= Double.toHexString(Operand2);
}
Operand1=Zwischenwert;
Operand2=Double.valueOf(Anz.getText()).doubleValue();
String oop1=op1;
String oop2=op2;

int zahl=0;
double zahl2 = (Operand2);
switch(akt_Operation)
{

case 'x':Rückrechnen(0, zahl2);
if (akt_Operation=='+'){
	Ergebnis= zahl+zahl2;
}


case '+': Ergebnis = Operand1 + Operand2;	
break;

case 'h': Ergebnis = Math.pow(Operand1,Operand2);
break;

case '-': Ergebnis = Operand1 - Operand2;
break;

case '*': Ergebnis = Operand1 * Operand2;
break;


case '%': Ergebnis = Operand1 % Operand2;

case '/': if(Operand2!=0)
Ergebnis = Operand1 / Operand2;

else
Ergebnis = 0;
break;

}


Zwischenwert = Ergebnis;
Anz.setText(Double.toString(Ergebnis));
}



private int Rückrechnen(int zahl,double zahl2) {
	// TODO Auto-generated method stub
	durchlaufen=durchlaufen+1;
	if (durchlaufen>1);
	String hexString="ff";
	hexString= Anz.getText();
	int i = Integer.valueOf(hexString, 16).intValue();
	if (durchlaufen>1){
	zahl2= i ;
	}else 
		zahl=i;
	//Anz.setText(Integer.toString(i));
	return(i);
}



public static void main(String args[])
{
taschenrechner Fenster = new taschenrechner("Taschenrechner");
}}
```

also es addiert einfach nicht die hexadezimal zahlen ich weis nicht wie ich das bewerkstelligen soll das er die addiert  .


----------



## ARadauer (11. Aug 2009)

ich habe da mal vor Kurzem ein kleines Testprogramm geschrieben, das Zahlensystem konvertiert.
von einem Zahlesystem nach Dezimal und umgekehrt...



```
public class AlienNumbers {

   public static void main(String[] args) throws IOException {
     System.out.println(convert("101", "01", "0123456789"));
     System.out.println(convert("15", "0123456789", "0123456789ABCDEF"));
     System.out.println(convert("215", "0123456789", "0123456789ABCDEF"));
     System.out.println(convert("1112", "0123456789", "BierSaufen;-)"));
   }

   public static String convert(String value, String sourceLang, String targetLang){
      int dez = parseToDezimal(sourceLang, value);
      return writeToLanguage(targetLang, dez);
   }

   public static int parseToDezimal(String sourcelang, String value){
      int pot = sourcelang.length();
      int result = 0;

      for(int i = 0; i <value.length(); i++){
         char c = value.charAt(value.length()- i-1);
         int v = sourcelang.indexOf(c);
         int r = (int) (v* Math.pow(pot, i));
         result += r;
      }
      return result;
   }

   public static String writeToLanguage(String targetLang, int dezimalValue){
      int pot = targetLang.length();
      StringBuilder result = new StringBuilder();

      while(dezimalValue!=0){
         int v = dezimalValue %pot;
         dezimalValue = dezimalValue/pot;

         result.append(targetLang.charAt(v));
      }

      return result.reverse().toString();
   }


}
```
vielleicht hilft dir das...

parseToDezimal parst eine Zahl nach dezimal, 
sourcelang ist hier die Sprache "01" für binär, "0123456789" dezimal oder "0123456789ABCDEF" hex usw...

writeToLanguage schreibt eine dezimal zahl in als die angegebenen sprache...

verständlich?


----------



## ARadauer (11. Aug 2009)

so kann man damit hex addieren...

```
String hexlang = "0123456789ABCDEF";
     
     int dez = parseToDezimal(hexlang,"C"); //12
     int dez2 = parseToDezimal(hexlang,"78"); //120
     System.out.println(dez);
     System.out.println(dez2);
     System.out.println(writeToLanguage(hexlang, dez+dez2)); //84 hex = 132 dez...
```


----------



## Painii (11. Aug 2009)

ARadauer hat gesagt.:


> writeToLanguage schreibt eine dezimal zahl in als die angegebenen sprache...



Das funktioniert aber nur mit Systemen mit 2 Zeichen...
Sonst wird die while-schleife unendlich, weil ja dezimalValue/1 == dezimalValue ist:

```
while(dezimalValue!=0){
         int v = dezimalValue %pot;
         dezimalValue = dezimalValue/pot;
 
         result.append(targetLang.charAt(v));
      }
```


----------



## ARadauer (11. Aug 2009)

klar.. das erste zeichen repräsentiert ja 0... ein zahlensystem mit 0 und sonst nix... mhn da wirst nicht weit kommen...


----------



## Painii (11. Aug 2009)

ARadauer hat gesagt.:


> klar.. das erste zeichen repräsentiert ja 0... ein zahlensystem mit 0 und sonst nix... mhn da wirst nicht weit kommen...



Was spräche gegen ein Einer-System?

0 = 0
00 = 1
000 = 2
0000 = 3 
etc.

(bestimmt wieder irgendein mathematischer Grund den ich grad nicht sehe)


----------



## ARadauer (11. Aug 2009)

??
2 mal 0 ist noch immer null ;-)

int r = (int) (v* Math.pow(pot, i));

v ist hier die nullerstelle, v bleibt 0

es gibt kein zahlensystem mit der basis 1.
wenn wir unser zahlensystem nehmen,
ist 0 das selbe wie 00 oder 0000000000000000000000000000


----------



## Painii (11. Aug 2009)

Aber ich könnte ja sagen ich nehme ein Symbol s.

Und sage einfach:
s=0
ss=1
sss=2
ssss=3

und dann einfach für jeden Zahl ein weiteres s anhängen/vorsetzen.

Wäre das kein Zahlensystem? Ich kann mich errinern dass wir früher in der Schule (1. oder 2. Klasse) so gezählt haben, da hatten wir dann Striche als Symbole und zum Schluss wurden die einfach zusammen gezählt.


----------

