Eingeben Rechnen Ausgeben - Leider nicht so einfach

Status
Nicht offen für weitere Antworten.

Limp

Mitglied
Hi Java Fans,
ich habe eine Applikation geschrieben, die mehrere Zahlen über Text Felder einliest, diese dann berechnen und dann wieder ausgibt. Das Problem ist ich weiß nicht wie und wo ich hab gerechnen soll. Ich Zahlen hab ich schon und sie sind auch schon in Variablen vom Typ int umgewandelt. Aber wo und wie muss ich wie rechnung machen?
Ich hoffe ihr wollt mir helfen. Das ihr es könnt weiß ich 😀
 
Hab gedacht neues Problem neuer Thread. Und ich bin bei Anfängerfragen besser aufgehoben.
Nächstes Problem ich kann es nicht ausgeben. Ich müsste das doch in einem Label ausgeben können oder? mit lb_f1.setText(x*""); oder?
 
x+"",
ja, mit einem Label ginge es

edit:
vorhin hieß es noch von Limp
> @activefresh: Husch Husch raus aus dem Forum sowelche wie dich kann man hier nicht gebrauchen.

doppelte Persönlichkeit, doppelter Account oder was ist hier los?
 
jo zwei Account.
Egal

ich bekomme die fehler meldung

C:\Dokumente und Einstellungen\Felix\Desktop\Funktionsplotter.java:128: x is not public in java.awt.Component; cannot be accessed from outside package

lb_f1.setText(x+"");

^
obwohl ich das eigentlich alles public ist. Woran könnte das liegen?
label ist in der Klasse Funktiosplotter
x ist in Klasse B2

muss ich x irgendwie vererben?? Die eingegebenen Zahlen muss ich ja auch nicht vererben und kann sie trotzdem in B2 nutzen
 
wie rufst du denn die klasse b2 auf um den x wert zu bekommen ?!?
evtl wäre es sinnvoll in der klasse funktionsplotter die funktion "berechnen" oder wie auch immer in klasse b2 aufzurufen und dann arbeitest du mit einem return x
 
im Konstruktor der Klasse Funktionsplotter steht
Code:
b2.addActionListener(new B2());


und weiter unten ist dann die Klasse 


class B2 implements ActionListener
   {
		public void actionPerformed(ActionEvent ae)
		{
		   int a,b,c,d,e,f;

            int x = a+b;
		   						           
            a = Integer.valueOf(tf_a.getText()).intValue();
            b = Integer.valueOf(tf_b.getText()).intValue();
            c = Integer.valueOf(tf_c.getText()).intValue();
            d = Integer.valueOf(tf_d.getText()).intValue();
            e = Integer.valueOf(tf_e.getText()).intValue();
            f = Integer.valueOf(tf_f.getText()).intValue();        
		}
		
		
   }
 
Code:
public class Funktionsblabla
extends ActionListener{
private int ergebnis = 0;

pubic static void main(){

b2.addActionListener(this);

      public void actionPerformed(ActionEvent ae)
      {
         int a,b,c,d,e,f;
                                      
            a = Integer.valueOf(tf_a.getText()).intValue();
            b = Integer.valueOf(tf_b.getText()).intValue();
            c = Integer.valueOf(tf_c.getText()).intValue();
            d = Integer.valueOf(tf_d.getText()).intValue();
            e = Integer.valueOf(tf_e.getText()).intValue();
            f = Integer.valueOf(tf_f.getText()).intValue();     
            ergebnis = a+b+c+d+e+f
      }
      
      
   }

du musst ein X doer dein ergebnis nur an der richtigen stelle deklarieren um überall drauf zugreifen zu können
 
jo klar,
du kannst es natürlich auch mit b2 klasse machen, ist aber dann wieder etwas anders. so ists eigentlich ganz ok bei deinem vorhaben.
 
also wenn ich das so mache komm ich auf unzählige Fehler. Könnte man die Klasse B2 nicht vererben?? Ich weiß aber nicht wie das genau geht. Könnte vlt nochmal jemand so freundlich seien??
 
also ich hab mich selber nochmal damit Beschäftigt so sieht bis jetzt mein quelltext:


Code:
import java.awt.*;
import java.awt.event.*;

public class Ableitung extends Frame
{
	private Button b1 = new Button("Berechenen"); // Button
   
    private Label lb_fx = new Label();
    private Label lb_x3 = new Label();
    private Label lb_x2 = new Label();
    private Label lb_x1 = new Label();
    public Label lb_f1 = new Label();
    public Label lb_f2 = new Label();
    public Label lb_f3 = new Label();
  
    private TextField tf_a = new TextField("0",40);
    private TextField tf_b = new TextField("0",40);
    private TextField tf_c = new TextField("0",40);
    private TextField tf_d = new TextField("0",40);
    private TextField tf_e = new TextField("0",40);
    private TextField tf_f = new TextField("0",40);
    
    public static void main(String args[])
    {
       Ableitung ab = new Ableitung();
       b2.addActionListener(this);
  
       public void actionPerformed(ActionEvent ae)
       {
       	 
       }
    }

   // Konstruktor der Klasse
    public Ableitung()
    {
      super("Ableitungsrechner");
      setSize(500,200);
      setLocation(100,100);
      setVisible(true);
      addWindowListener(new WindowAdapter() 
      {
         public void windowClosing(WindowEvent event)
         {
            System.exit(0);
         }
      });
      setLayout(null);
      
      b1.setBounds(270,40,70,20);
      lb_fx.setBounds(10,35,20,30);
      tf_a.setBounds(35,40,25,20);
      lb_x3.setBounds(65,40,40,20);
      tf_b.setBounds(105,40,25,20);
      lb_x2.setBounds(135,35,40,30);
      tf_c.setBounds(175,40,25,20);
      lb_x1.setBounds(205,35,25,30);
      tf_d.setBounds(235,40,25,20);
      lb_f1.setBounds(10,70,300,20);
      /lb_f2.setBounds(10,100,300,20);
      lb_f3.setBounds(10,130,300,20);
      
      lb_fx.setText("f(x)=");
      lb_x3.setText("* x^3+");
      lb_x2.setText("* x^2+");
      lb_x1.setText("* x +");
      lb_f1.setText("f'(x)=");
      lb_f2.setText("f''(x)=");
      lb_f3.setText("f'''(x)=");
      
      add(b1);
      add(lb_fx);
      add(tf_a);
      add(lb_x3);
      add(tf_b);
      add(lb_x2);
      add(tf_c);
      add(lb_x1);
      add(tf_d);
      add(tf_f);
      add(lb_f1);
      add(lb_f2);
      add(lb_f3);
      
    }
}
[quote]

Da kommen jetzt aber 42 errors:

E:\Eigene Dateien\Java Progs\Ableitung.java:28: illegal start of expression

       public void actionPerformed(ActionEvent ae)

       ^

E:\Eigene Dateien\Java Progs\Ableitung.java:35: class, interface, or enum expected

    public Ableitung()

           ^
und so weiter was ist denn jetzt schon wieder los?
[/quote]
 
die ActionPeformed-Operation muss in der Klasse stehen wie alle anderen Operation auch,
nicht innerhalb der main-Operation

dann sind fast alle Fehler weg,

-----

b2.addActionListener(this);

kann natürlich nicht in der main stehen, denn da ist 'this' (= eigenes Objekt) nicht definiert,
dieser Befehl passt ganz gut in den Konstruktor von Ableitung,

bleibt noch das Problem, dass es b2 gar nicht gibt, meinst du b1?

----------


setVisible(true);

besser erst am Ende des Konstruktors aufrufen, wenn alle Komponenten in die GUI eingefügt sind
 
oh ja klar mein ich b1 hab falsch kopiert danke


Jetzt hab ich nur noch das hier:

E:\Eigene Dateien\Java Progs\Ableitung.java:83: illegal start of expression

public void actionPerformed(ActionEvent ae)

^
und

E:\Eigene Dateien\Java Progs\Ableitung.java:97: class, interface, or enum expected

}
 
HALT STOP!!!

mal selber geguckt und fehler weg gemacht:

Nur noch:

E:\Eigene Dateien\Java Progs\Ableitung.java:81: addActionListener(java.awt.event.ActionListener) in java.awt.Button cannot be applied to (Ableitung)

b1.addActionListener(this);

^
als Fehler

"^" muss unter dem "." seien
 
public class Ableitung extends Frame

->

public class Ableitung extends Frame implements ActionListener
 
:applaus: :applaus: :applaus: :applaus: :applaus: :applaus:
Du bist der Größte!!!!!!!
:applaus: :applaus: :applaus: :applaus: :applaus: :applaus:
naja ich mach mal weiter bis zum nächsten hinternis :lol:
 
hoffentlich ist noch einer wach^^

also mein Quelltext ist jetzt etwas weiter. Aber irgendwie rechnet er noch nicht richtig. Bei lb_f1 soll das ergebnis ausgegeben werden. Aber da steht nur der 0.0

Code:
import java.awt.*;
import java.awt.event.*;

public class Ableitung extends Frame implements ActionListener
{
	public double a,b,c,d;
	
	private Button b1 = new Button("Berechenen"); // Button
   
    private Label lb_fx = new Label();
    private Label lb_x3 = new Label();
    private Label lb_x2 = new Label();
    private Label lb_x1 = new Label();
    public Label lb_f1 = new Label();
    public Label lb_f2 = new Label();
    public Label lb_f3 = new Label();
  
    private TextField tf_a = new TextField("0",40);
    private TextField tf_b = new TextField("0",40);
    private TextField tf_c = new TextField("0",40);
    private TextField tf_d = new TextField("0",40);
    private TextField tf_e = new TextField("0",40);
    private TextField tf_f = new TextField("0",40);
    
    double x = a+b;
    
    public static void main(String args[])
    {
       Ableitung ab = new Ableitung();
       
    }

   // Konstruktor der Klasse
    public Ableitung()
    {
      super("Ableitungsrechner");
      setSize(500,200);
      setLocation(100,100);
      setVisible(true);
      addWindowListener(new WindowAdapter() 
      {
         public void windowClosing(WindowEvent event)
         {
            System.exit(0);
         }
      });
      setLayout(null);
      
      b1.setBounds(270,40,70,20);
      lb_fx.setBounds(10,35,20,30);
      tf_a.setBounds(35,40,25,20);
      lb_x3.setBounds(65,40,40,20);
      tf_b.setBounds(105,40,25,20);
      lb_x2.setBounds(135,35,40,30);
      tf_c.setBounds(175,40,25,20);
      lb_x1.setBounds(205,35,25,30);
      tf_d.setBounds(235,40,25,20);
      lb_f1.setBounds(10,70,300,20);
      lb_f2.setBounds(10,100,300,20);
      lb_f3.setBounds(10,130,300,20);
      
      lb_fx.setText("f(x)=");
      lb_x3.setText("* x^3+");
      lb_x2.setText("* x^2+");
      lb_x1.setText("* x +");
      lb_f1.setText(x+"");
      lb_f2.setText("f''(x)=");
      lb_f3.setText("f'''(x)=");
        
      
      add(b1);
      add(lb_fx);
      add(tf_a);
      add(lb_x3);
      add(tf_b);
      add(lb_x2);
      add(tf_c);
      add(lb_x1);
      add(tf_d);
      add(tf_f);
      add(lb_f1);
      add(lb_f2);
      add(lb_f3);
      
      b1.addActionListener(this);
  
      
    }
	public void actionPerformed(ActionEvent ae)
    {
       try{
       	   
           a = Integer.valueOf(tf_a.getText()).intValue();
           b = Integer.valueOf(tf_b.getText()).intValue();
           c = Integer.valueOf(tf_c.getText()).intValue();
           d = Integer.valueOf(tf_d.getText()).intValue();        
          
          }catch(Exception e){
         System.out.println("Sie koennen nur Zahlen eingeben!");}
	   	 
    }
}
[quote][/quote]
 
du setzt den Text ja nicht neu bei Buttonklick oder sonstwas,
anfangs schreibst du 0.0 rein und danach nix mehr,

da wird nix per Zauberhand automatisch gemacht 😉
 
wie bekomm ich das denn hin??
Ich hab z.B. wenn ich ein System.out.println benutzt habe das ergebnis in der Konsole gehabt.
Aber wie geht das mit nem Fextfeld?
 
ach und wenn noch jemad hier rein guckt: Kann ich auch in einem Label text + variable + test haben?
Edit sagt, ich hab textfeld und label verwechselt
 
im ActionListener hast du a-d bestimmt,
dann musst du x ausrechnen;
und
lb_f1.setText(nun anzuzeigender String);
aufrufen, wobei dieser String dann z.B. wieder x+"" sein könnte
 
Code:
public void actionPerformed(ActionEvent ae)
    {
       try{
             
           a = Integer.valueOf(tf_a.getText()).intValue();
           b = Integer.valueOf(tf_b.getText()).intValue();
           c = Integer.valueOf(tf_c.getText()).intValue();
           d = Integer.valueOf(tf_d.getText()).intValue();       
         
          }catch(Exception e){
         System.out.println("Sie koennen nur Zahlen eingeben!");}
         
    }

wenn ich dich richtig verstanden habe soll er jetzt irgendwas mit den zahlen machen und dann in einem textfeld oder als label ausgeben. naja dann rechne doch erstmal und gibs dann aus

Code:
public void actionPerformed(ActionEvent ae)
    {
       try{
           a = Integer.parseInt(tf_a.getText());
           b = Integer.parseInt(tf_b.getText());
           c = Integer.parseInt(tf_c.getText());
           d = Integer.parseInt(tf_d.getText()); 
           if(a!=null){
              x=x+a
              if(b!=null){
                 x=x+b
                 if(c!=null){
                    x=x+c
                    if(d!=null){
                        x=x+d
                    }
                 }
              }
           }

         deinAusgabeTextfeld.setText(String.valueOf(x));
          }catch(Exception e){
         System.out.println("Sie koennen nur Zahlen eingeben!");}
         
    }
 
jo funktioniert einwandfrei. vielen dank. Aber kann ich das weg bekommen das er mir erst 0.0 ausgibt wenn ich das erste mal auf den Button klick und erst beim zweitenmal das ergebnis kommt?

Und kann man Text Variable Text irgendwie hinternander weg schreiben oder muss man ein Label für Text dann ein für Variable und dann wieder ein für Text machen?
 
> das er mir erst 0.0 ausgibt wenn ich das erste mal auf den Button klick

falls du meinst, dass ganz am Anfang des Programms 0.0 eingtragen wird:
tja, wenn du das nicht willst, dann lasse es bleiben, der Befehl steht nunmal in deinem Code drin

falls bei einem Button-Klick in den Zahl-Variablen nix drin steht ist 0.0 doch korrekt,
wenn du nicht willst, dass 0.0 eingetragen wird, dann drücke nicht den Button 😉
oder fange eben ab dass 0.0 nie angezeigt wird,

falls in den Zahl-Variablen was drinsteht und falsch 0.0 rauskommt,
dann ist das natürlich noch ein Bug der untersucht werden muss,

bei deinem wirren Programmieren sag ich erstmal nix dazu,
untersuche das selber oder poste ein vollständiges Programm usw.

-----------

in jedes Label kommt ein String, den kannst du vorher beliebig zusammenbauen:
String st = "Hello " +x + " World";
label.setText(st);
 
nee wenn ich was mache ich muss zwei mal den button klicken. Ich rechne x = a * 3. wenn ich für a 2 einsetze klick ich ein mal kommt die 0.0 beim zweiten mal 6. wenn ich dann für a 3 einsetzte passiert erst nicht und beim zweiten klicken kommt erst 9 heraus.
 
Code:
import java.awt.*;			
import java.awt.event.*;	
public class Ableitung extends Frame implements ActionListener
{
	public double a,b,c,d;
	double x = a+b;
	private Button b1 = new Button("Berechnen"); 
   
    private Label lb_fx = new Label();
    private Label lb_x3 = new Label();
    private Label lb_x2 = new Label();
    private Label lb_x1 = new Label();
    public Label lb_f1 = new Label();
    public Label lb_f2 = new Label();
    public Label lb_f3 = new Label();
  
    private TextField tf_a = new TextField("0",40);
    private TextField tf_b = new TextField("0",40);
    private TextField tf_c = new TextField("0",40);
    private TextField tf_d = new TextField("0",40);
    
    
    public static void main(String args[])
    {
       Ableitung ab = new Ableitung();
       
    }

    public Ableitung()
    {
      super("Ableitungsrechner");	
      setSize(500,200);				
      setLocation(100,100);			
      setVisible(true);
      addWindowListener(new WindowAdapter() 
      {
         public void windowClosing(WindowEvent event)
         {
            System.exit(0);
         }
      });
      setLayout(null);
      
      b1.setBounds(270,40,70,20);		
      lb_fx.setBounds(10,35,20,30);		
      tf_a.setBounds(35,40,25,20);		
      lb_x3.setBounds(65,40,40,20);
      tf_b.setBounds(105,40,25,20);
      lb_x2.setBounds(135,35,40,30);
      tf_c.setBounds(175,40,25,20);
      lb_x1.setBounds(205,35,25,30);
      tf_d.setBounds(235,40,25,20);
      lb_f1.setBounds(10,70,300,20);
      lb_f2.setBounds(10,100,300,20);
      lb_f3.setBounds(10,130,300,20);
      lb_f1.setText("f(x)=");
      lb_fx.setText("f(x)=");	
      lb_x3.setText("* x^3+");	
      lb_x2.setText("* x^2+");  
      lb_x1.setText("* x +");
      lb_f2.setText("f''(x)=");
      lb_f3.setText("f'''(x)=");
        
      
      add(b1);        
      add(lb_fx);    
      add(tf_a);     
      add(lb_x3);
      add(tf_b);
      add(lb_x2);
      add(tf_c);
      add(lb_x1);
      add(tf_d);
      add(lb_f1);
      add(lb_f2);
      add(lb_f3);
      
      b1.addActionListener(this); 
  
      
    }
	public void actionPerformed(ActionEvent ae)
    {
       
       try{
       	   double x = a * 3;
       	   
           a = Integer.valueOf(tf_a.getText()).intValue();
           b = Integer.valueOf(tf_b.getText()).intValue();
           c = Integer.valueOf(tf_c.getText()).intValue();
           d = Integer.valueOf(tf_d.getText()).intValue();
           lb_f1.setText(String.valueOf(x));        
          
          }catch(Exception e){
         System.out.println("Sie koennen nur Zahlen eingeben!");}
	   	 
    }
}
 
....................


> double x = a * 3;
> a = Integer.valueOf(tf_a.getText()).intValue();

findest du nicht, dass du x erst dann ausrechnen solltest, wenn a gesetzt ist?

beim Programmieren gelten meist die gleichen Regeln wie im richtigen Leben:
bevor man eine Glas nicht mit Wasser gefüllt hat, kann man auch nicht daraus trinken
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben