Schulprogramm



  • Nabend!

    Dies ist der Code für ein kleines Schulprogramm, welches die Gleichung a*x + b = 0, unter der Angabe von a und b, lösen soll. ( x = -b/a).

    Nun liefert er mir 4 Fehlermeldungen:

    C:\Dokumente und Einstellungen\X\Eigene Dateien\Test1\Test1.java:46: operator == cannot be applied to java.lang.Float,int
    if (fA==0) {
    ^
    C:\Dokumente und Einstellungen\X\Eigene Dateien\Test1\Test1.java:51: operator * cannot be applied to int,java.lang.String
    fX = (-1*sB)/sA;
    ^
    C:\Dokumente und Einstellungen\X\Eigene Dateien\Test1\Test1.java:54: incompatible types
    found : float
    required: java.lang.Float
    fA = Float.parseFloat(sA);
    ^
    C:\Dokumente und Einstellungen\X\Eigene Dateien\Test1\Test1.java:55: incompatible types
    found : float
    required: java.lang.Float
    fB = Float.parseFloat(sB);
    ^

    import java.awt.*;
    import java.applet.*;
    import java.awt.event.*;
    
    public class Test1 extends Applet implements ActionListener{
    
    	String sA;
    	String sB;
    
    	Float fA;
    	Float fB;
    	Float fX;
    
    	String sX;
    	String sL; 
    
    	FlowLayout Flgleichung = new FlowLayout();	
    	TextField  TfA	       = new TextField(5);
    	TextField  TfB         = new TextField(5);
    	TextField  TfX         = new TextField(5);
    	Label      LbA         = new Label("a:");
    	Label      LbB         = new Label("b:");
    	Label      LbX         = new Label("x:");
    	Button     Btrechne    = new Button("Rechne"); 	
    
      	public void init() {
    
    	add(LbA);
    	add(TfA);
    	add(TfB);
    	add(TfB);
    	add(Btrechne);
    	add(LbX);
    	add(TfX);	
    
    	Btrechne.addActionListener(this);}
    
        public void actionPerformed(ActionEvent e) {	
    
    	sA = TfA.getText();
    	sB = TfB.getText();
    
    	if (fA==0) {
    
    		sL = "keine Loesung";}
    	else 
    
    	    fX = (-1*sB)/sA;
    
    	fA = Float.parseFloat(sA);
    	fB = Float.parseFloat(sB);
    
    	sX = String.valueOf(fX);
    
    	TfX.setText(sL);
    
    }}
    

    Der Sachverhalt dürfte klar sein: Hilfe!



  • 1. Es fehlt eine geschweifte Klammer.
    2. Du versuchst einen int mit einem String zu multiplizieren und das kann natürlich nicht gehen.
    Hier mal ne funktionierende Version:

    import java.awt.*;
    import java.applet.*;
    import java.awt.event.*;
    
    public class Test1 extends Applet implements ActionListener
    {
    
        String sA;
        String sB;
    
        float fA;
        float fB;
        float fX;
    
        String sX;
        String sL;
    
        FlowLayout Flgleichung = new FlowLayout();   
        TextField  TfA           = new TextField(5);
        TextField  TfB         = new TextField(5);
        TextField  TfX         = new TextField(5);
        Label      LbA         = new Label("a:");
        Label      LbB         = new Label("b:");
        Label      LbX         = new Label("x:");
        Button     Btrechne    = new Button("Rechne");    
    
          public void init()
          {
    
    		    add(LbA);
    		    add(TfA);
    		    add(TfB);
    		    add(TfB);
    		    add(Btrechne);
    		    add(LbX);
    		    add(TfX);   
    
    		    Btrechne.addActionListener(this);
          }
    
        public void actionPerformed(ActionEvent e)
        {   
    
    	    sA = TfA.getText();
    	    sB = TfB.getText();
    
    	    if (fA==0)	       
    	        sL = "keine Loesung";
    	    else	     
    	        fX = (-1*Float.parseFloat(sB))/Float.parseFloat(sA);
    
    	    fA = Float.parseFloat(sA);
    	    fB = Float.parseFloat(sB);
    
    	    sX = String.valueOf(fX);
    
    	    TfX.setText(sL);
       	}
    }
    


  • Danke.

    Jetzt bekomme ich nur noch "keine Loesung" ausgegeben.



  • Das liegt daran das fA immer 0 ist. Die zuweisung an fA findet erst später statt und somit erhälst du immer keine Lösung


  • Mod

    IchHabNeFrage schrieb:

    Dies ist der Code für ein kleines Schulprogramm, welches die Gleichung a*x - b = 0, unter der Angabe von a und b, lösen soll. ( x = -b/a).

    Hui, das solltest du aber nochmal überdenken. ...nachher verläßt sich noch jemand auf dein Programm. 🙂


  • Mod

    fA, fB und fX sollten nicht vom Typ Float sein, sondern vom Typ float. Java achtet auf Groß- und Kleinschreibung und Float ist da etwas anderes als float.


Anmelden zum Antworten