Problem mit FocusListener

Hallo!

Ein Beispiel dafür wie man den Betrag einer Komplexen Zahl ausrechnen könnte wäre dann folgendes:
Code:
 package de.tutorials;
 
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
 public class ComplexNumberExample {
 
 	/**
 	 * @param args
 	 */
 	public static void main(String[] args) {
 		String regex = "([-]?\\d+[.]?\\d+)([+-]\\d+[.]?\\d+)i";
 		Pattern pattern = Pattern.compile(regex);
 
 		// Darstellung der Imaginären Zahl nach Muster:
 		// RealAnteil: x
 		// Imaginärteil: y
 		// Zomplexe Zahl z = x + yi
 		// z = 1+sqrt(3)i -> 1.0+1.732050807569i -> |z| = 2
 		// z = -1.0-i -> -1.0-1.0i -> |z| = sqrt(2) 
 		
 		String imgNumber = "-1.0-1.0i";
 		Matcher matcher = pattern.matcher(imgNumber);
 		if (matcher.matches()) {
 			String realPart = matcher.group(1);
 			String imgPart = matcher.group(2);
 
 			System.out.println("Real-Teil: " + realPart);
 			System.out.println("Imaginär-Teil: " + imgPart);
 			if(imgPart.startsWith("+")){
 				imgPart = imgPart.substring(1);
 			}
 
 			double realPathValue = Double.parseDouble(realPart);
 			double imgPathValue = Double.parseDouble(imgPart);
 
 			double absoluteValue = Math.sqrt(realPathValue * realPathValue
 					+ imgPathValue * imgPathValue);
 			System.out.println("Betrag: " + absoluteValue);
 		}
 	}
 }

Gruß Tom
 
So das gute zu erst, es funktioniert Endlich , war schon halb am verzweifeln :)
Nur verstanden warum es funktioniert, weis ich noch net so ganz, vielleicht könnt ihr mich ja auch noch um das Theoretische aufklären, das wär nett.
Weil eigentlich hab ich von meinem oberen Programm, nur die actionPerformed Methode geändert in
Code:
public void actionPerformed(ActionEvent e) 
   {
	if(realflagon)realteil.setText(realteil.getText() +e.getActionCommand());
	if(imagflagon)imaginärteil.setText(imaginärteil.getText() +e.getActionCommand()); 	
  }
Immerhin hat es funtioniert. Ich dank euch beiden, auch wenn ich Tom´s code überhaupt nicht verstehe :) War wohl etwas spät gestern.


MFG
Sirc
 
du hast einen actionlistener, da du deine buttons als actionCommand die zahlen gegeben hast kannst du mit
Code:
e.getActionCommand();
diesen wert abfragen(liefert dir einen string zurueck,
Code:
if(realflagon)
testet ob das flag gesetzt ist(ist eine kurzform von == true)
Code:
realteil.setText(realteil.getText() +e.getActionCommand());
holt sich den wert von realteil und haengt die gedrueckte zahl an. war es das was du wissen wolltest?
 
er schreibt dir ein plus in das textfeld da ja eines deiner beiden flags auf true steht, also testet er brav, stellt fest oh eines der flags ist true, juhu, holt sich das actioncommand und schreibt es in dein textfeld..umgehen kannst du das indem du die abfrage fuer sonderzeichen(+,-,*,/) vor die abfrage der flags stellst
Code:
public void actionPerformed(ActionEvent e) 
   {
 //hier auch die abfragen fuer alle anderen zeichen
 if(e.getActionCommand().equals("+"))
		  {
                      
			double real = Double.valueOf(realteil.getText());
			double imag = Double.valueOf(imaginärteil.getText());
			Cartesian zahl = new Cartesian(real,imag);
			zahl.output();
			realteil.setText("");
			imaginärteil.setText("");
		  } else if(e.getActionCommand().equals("-")).........
else if(realflagon)realteil.setText(realteil.getText() + e.getActionCommand());
                    else if(imagflagon)imaginärteil.setText(imaginärteil.getText() + e.getActionCommand());
		
	  }
p.s was wolltest du den dann erklaert haben?
 
Zuletzt bearbeitet:
habs auch grad gecheck, und ne zusätzliche if-abfrage eingebaut, dann gings...
trotzdem....... es nächste mal überleg ich erst, dann poste ich versprochen :)
 
Zurück