If - Abfrage geht nicht -> Warum ? :)

Status
Nicht offen für weitere Antworten.

v2elite

Mitglied
Hallo

Ich habe folgende Code Fragmente in meinem Programm:

Code:
	JTextField C = new JTextField ("C",5);
	JTextField F = new JTextField ("F",5);

und 2 If Abfragen:

Code:
	if (C.getText()=="C"){}		
	else if (F.getText()=="F"){}

Die Bedingungen müssten doch eigentlich beide true sein !? aber keine if schleife wird betreten !? :autsch: ???:L 😀

Weiss jemand Rat
 
Objekte bzw. nicht-primitive Daten werden mit .equals() verglichen, mit == vergleicht man nur die Referenz. Also "str1.equals(str2)" wäre korrekt.
 
hmm

if (C.equals("C"))

geht auch nicht ^^

oder wie kann ich das anders machen

also ich will ne bedingung wenn der buchstabe im textfeld "C" ist soll die schleife durchlaufen werden

hier der komplette code zur verdeutlichung:

Code:
//Umrechnung.java

import java.io.*;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;

public class Umrechnung extends JFrame implements ActionListener
{
	Container pane = getContentPane();
	
	JTextField C = new JTextField ("C",5);
	JTextField F = new JTextField ("F",5);
	JButton B = new JButton ("Berechne");
	JLabel P = new JLabel ("Ergebnis: ");
	
	Umrechnung()
	{
	
		setTitle("Umrechnung C°<--> F");
		setLocation (300,300);
		setSize(300,80);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		pane.setLayout(new BorderLayout());
		pane.add(C,BorderLayout.WEST);
		pane.add(B,BorderLayout.CENTER);
		pane.add(F,BorderLayout.EAST);
		pane.add(P,BorderLayout.SOUTH);
		
		C.setHorizontalAlignment(JTextField.CENTER);
		F.setHorizontalAlignment(JTextField.CENTER);
		P.setHorizontalAlignment(JLabel.CENTER);
		
		B.addActionListener(this);
		
		
	}
	
	public void actionPerformed (ActionEvent event)
	{
		if (event.getSource()== B)
		{
		
			System.out.println("Button geht");
			
			//String Cel = C.getText();
			//String Far = F.getText();
			
			
			if (C.getText().equals("C"))
			{
			
				System.out.println("F geht");
				double Fa = (Double.parseDouble(F.getText())-32)/(double)1.8;
				
				P.setText(String.valueOf(Fa));
				F.setText("F");
			}
			
			else if (F.getText().equals("F"))
			{
				System.out.println("C geht");
				
				double Ca = (double)(Double.parseDouble(C.getText())*1.8)+32;
								
				P.setText(String.valueOf(Ca));
				C.setText("C");
			}
		}
	}
	
	public static void main (String[]args)
	{
		Umrechnung neu = new Umrechnung();
		neu.setVisible(true);
	}
}
 
Zuletzt bearbeitet:
oki jetzt gehts 🙂 das getText() hat gefehlt

^^ ja dämmlicher name kann sein ... aber das prog ist auch ganz klein 😉

Ok ich danke euch hat sich damit erledigt
 
So besser ? 😳

Code:
//Umrechnung.java

import java.io.*;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;

public class Umrechnung extends JFrame implements ActionListener
{
	Container pane = getContentPane();
	
	JTextField Celsius = new JTextField ("C",5);
	JTextField Fahrenheit = new JTextField ("F",5);
	JButton B = new JButton ("Berechne");
	JLabel P = new JLabel ("Ergebnis: ");
	
	Umrechnung()
	{
	
		setTitle("Umrechnung C°<--> F");
		setLocation (300,300);
		setSize(300,80);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		pane.setLayout(new BorderLayout());
		pane.add(Celsius,BorderLayout.WEST);
		pane.add(B,BorderLayout.CENTER);
		pane.add(Fahrenheit,BorderLayout.EAST);
		pane.add(P,BorderLayout.SOUTH);
		
		Celsius.setHorizontalAlignment(JTextField.CENTER);
		Fahrenheit.setHorizontalAlignment(JTextField.CENTER);
		P.setHorizontalAlignment(JLabel.CENTER);
		
		B.addActionListener(this);
		
		
	}
	
	public void actionPerformed (ActionEvent event)
	{
		if (event.getSource()== B)
		{
		
			System.out.println("Button geht");
			
			//String Cel = C.getText();
			//String Far = F.getText();
			
			
			if (Celsius.getText().equals("C"))
			{
			
				System.out.println("F geht");
				double Fa = (Double.parseDouble(Fahrenheit.getText())-32)/(double)1.8;
				
				P.setText(Fahrenheit.getText()+" Fahrenheit sind "+String.valueOf(Fa)+" C");
				Fahrenheit.setText("F");
			}
			
			else if (Fahrenheit.getText().equals("F"))
			{
				System.out.println("C geht");
				
				double Ca = (double)(Double.parseDouble(Celsius.getText())*1.8)+32;
								
				P.setText(Celsius.getText()+" C sind "+String.valueOf(Ca)+" Fahrenheit");
				Celsius.setText("C");
			}
		}
	}
	
	public static void main (String[]args)
	{
		Umrechnung neu = new Umrechnung();
		neu.setVisible(true);
	}
}
 
Abgesehen davon, dass laut Code Conventions Variablennamen klein geschrieben werden: Ist doch schon um einiges deutlicher, oder?
 
So besser ? 😳

Code:
//Umrechnung.java

	JTextField Celsius = new JTextField ("C",5);
	JTextField Fahrenheit = new JTextField ("F",5);
	JButton B = new JButton ("Berechne");
	JLabel P = new JLabel ("Ergebnis: ");
	
}

ich machs so, dann weiß man später eher, was gemeint ist ( siehe voriges Posting von fatzminator)
Java:
	JTextField tfCelsius = new JTextField ("C",5);
	JTextField tfFahrenheit = new JTextField ("F",5);
	JButton btRechne = new JButton ("Berechne");
	JLabel lblErgebnis= new JLabel ("Ergebnis: ");
 
Und abgesehen davon:
IchBinEineKlasse
ichBinEineMethode()
ichBinEineVariable
ichbineinpackage
ICH_BIN_EINE_KONSTANTE

verstehst du, was ich dir sagen will 😉 ?
 
nicht "wie würdest" sondern "würdest" - es ging mir darum, dass die Variable bereits vorkam, und wir sollten alle wissen, was final in Java bedeutet 🙂 Wann kann man eigentlich const verwenden?
 
ich machs so, dann weiß man später eher, was gemeint ist ( siehe voriges Posting von fatzminator)
Java:
	JTextField tfCelsius = new JTextField ("C",5);
	JTextField tfFahrenheit = new JTextField ("F",5);
	JButton btRechne = new JButton ("Berechne");
	JLabel lblErgebnis= new JLabel ("Ergebnis: ");

Da kann man jetzt lange drüber philosophieren, aber ich finde in solchen Fällen sowas wie
celsiusTextField
fahrenheitTextField
rechneButton
ergebnisLabel
leichter lesbar. Menschen können gut Worte lesen, aber Abkrzngn hn sstm nd vkle sind ein bißchen problematisch...
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben