preload
basicPlayer

Java problem

Comunio.de Foren-Übersicht -> Off Topic General
Autor Nachricht
Gast





BeitragVerfasst am: 16 Apr 2006 14:36   Titel: Java problem Antworten mit Zitat

Hab ein Problem mit Java Runtime!

Java funktioniert nur auf einem Benutzer?
Muss ich da irgendetwas einstellen?
Wer kann mir da helfen?
Nach oben
Gast





BeitragVerfasst am: 16 Apr 2006 17:35   Titel: Antworten mit Zitat

Das liegt bestimmt daran, das nur der eine B4enutzer die Admistratoenrechte besitzt.
Nach oben
Gast





BeitragVerfasst am: 17 Apr 2006 11:09   Titel: Antworten mit Zitat

Nein alle Benutzer sind Administrator
Nach oben
Gast





BeitragVerfasst am: 17 Apr 2006 12:51   Titel: Antworten mit Zitat

Is das vielleicht so eingestellt, dass Java nur bei dem Benutzer im Autostart mit drin ist ?
Nach oben
Gast





BeitragVerfasst am: 10 Okt 2010 16:55   Titel: Antworten mit Zitat

Hole diesen uralten Thread mal hoch, um mein Problem darzulegen.

Will mich mit der Programmiersprache java ein wenig vertraut machen. habe dabei den Tipp bekommen: learning by doing.
Also einfach mir ein Projekt vornehmen, ein kleines Programm erstellen.
Habe nun einen Taschenrechner mit den vier Grundrechenarten gebaut. Danach noch ein Programm, dass ein wenig komplizierter ist.

Derzeit versuche ich ein kleines Programm zu basteln, das mir die Nullstellen einer quadratischen Funktion ermittelt.

Dabei habe ich jetzt das ein oder andere Problem, weil ich zum Einen das erste mal mit double an Stelle von int arbeite und zum Anderen die Bedingungen mit if und else versuche zu berücksichtigen.

Ich werde gleich einen Teil des Quelltextes mit Fehlermeldungen nachreichen und hoffe, dass mir geholfen werden kann.

Vielen Dank im Voraus.


EDIT:

public void jButton1_ActionPerformed(ActionEvent evt) {
double jTextField1=0;
double jTextField2=0;
double jTextField3=0;
double jTextField4=0;
double jTextField5=0;
jTextField1=Double.parseDouble(jTextField1.getText());
jTextField2=Double.parseDouble(jTextField2.getText());
jTextField3=Double.parseDouble(jTextField3.getText());


if ((((jTextField2/2)*(jTextField2/2))-jTextField3)<0) {
jTextField4="nicht vorhanden";
jTextField5="nicht vorhanden";
jTextField4.setText(String.valueOf(jTextField4));
jTextField5.setText(String.valueOf(jTextField5));
}
else {
jTextField4=-(jTextField2/2)+Math.sqrt(((jTextField2/2)*(jTextField2/2))-jTextField3);
jTextField5=-(jTextField2/2)-Math.sqrt(((jTextField2/2)*(jTextField2/2))-jTextField3);
jTextField4.setText(String.valueOf(jTextField4));
jTextField5.setText(String.valueOf(jTextField5));
}
}


darauf folgende Fehlermeldungen:

1. zu den fettmarkierten Zeilen, Spalte jeweils die mit dem letzten Punkt (der vor dem getText)
"Double cannot be dereferenced"
Klingt als müsse ich das vorher irgendwie konkreter definieren, habe aber keine Ahnung.

Würde erstmal gern dieses Problem gelöst wissen. Die anderen folgen dann schon noch.
Nach oben
Gast





BeitragVerfasst am: 10 Okt 2010 17:50   Titel: Antworten mit Zitat

Also zunächst einmal finde ich deine Variablen-Belegung echt fies.

JTextField (großes "J") ist ein fest vordefinierter Begriff, den man nicht einfach so zweckentfremden sollte, um ihn für eine simple "Double"-Variable zu missbrauchen.
Da die Java-Engine beim Compilen nach Groß- und Kleinschreibung unterscheidet, ist das zwar fast unproblematisch, kann aber für den Programmierer zu krassen Missverständnissen führen.

Ich kann aus deinem Quelltext leider nicht herauslesen, wie du deine Textfelder in der GUI-ansteuerst, dafür fehlt der entscheidende Part.

Dir ist aber klar, dass double jTextField1 eine einfache Double-Variable ist und mit einem JTextField nichts zu tun hat? Sorry, falls du das jetzt mit einem eindeutigen "Ja" beantwortet hast.

---

Grundsätzlich müsste eine Oberfläche, die den Inhalt eines Textfeldes zu einem Double parsed ungefähr folgendermaßen aufgebaut sein:

Code:

import java.awt.*;
import javax.swing.*;
import java.text.NumberFormat;

public class Anwendung implements JFrame{
   // Konstruktor:
   public Anwendung(){
        super("Anwendung"); // setzt Fenstertitel
        setResizable(false);
        setDefaultCloseOperation(EXIT_ON_CLOSE);

        JTextField text1 = new JTextField();
        JButton knopf = new JButton("Mach was");

        knopf.addActionListener(new Action Listener){
                         public void actionPerformed(ActionEvent ae) {
            deineFunktion();
         }
        }
       
        setLayout(new BorderLayout());
        add(text1, BorderLayout.NORTH);
        add(knopf, BorderLayout.CENTER);

        pack();
        setVisible(true);
   }
   public void deineFunktion(){
        double txt1 = 0.0;
        try{
               txt1 = Double.parseDouble(text1.getText());
        }catch(NumberFormatException nfe){
              // bla... denk dir was aus :P
        }
        // jetzt solltest du mit der double variable txt1 rechnen können. ;)
  }

   // Instantiieren:
   public static void main(String[] argv)
   {
       new Anwendung();
   }
}


Sollte sogar lauffähig sein.
Habs aber nicht getestet...
Nach oben
Gast





BeitragVerfasst am: 10 Okt 2010 18:07   Titel: Antworten mit Zitat

Schonmal danke für deine Ausführungen Exel.


WilhelmFCB hat folgendes geschrieben:

public void jButton1_ActionPerformed(ActionEvent evt) {

Es geht also nur um die Befehle für den Button, das Restliche sollte doch für meine Frage unwichtig sein, oder?

double jTextField1=0;
double jTextField2=0;
double jTextField3=0;
double jTextField4=0;
double jTextField5=0;

Hier hätte ich natürlich auch double jTextField1=a; etc. schreiben können.

jTextField1=Double.parseDouble(jTextField1.getText());
jTextField2=Double.parseDouble(jTextField2.getText());
jTextField3=Double.parseDouble(jTextField3.getText());


Hier liegt jetzt der Fehler vor, den ich aber noch immer nicht so wirklich ausmachen kann.

if ((((jTextField2/2)*(jTextField2/2))-jTextField3)<0) {
jTextField4="nicht vorhanden";
jTextField5="nicht vorhanden";

An dieser Stelle erkennt er eine Zeichenkette (String), so sollte es auch sein, aber das darf anscheinend nicht sein, denn dort steht dann "found: String; reqiured: double

jTextField4.setText(String.valueOf(jTextField4));
jTextField5.setText(String.valueOf(jTextField5));
}
else {
jTextField4=-(jTextField2/2)+Math.sqrt(((jTextField2/2)*(jTextField2/2))-jTextField3);
jTextField5=-(jTextField2/2)-Math.sqrt(((jTextField2/2)*(jTextField2/2))-jTextField3);
jTextField4.setText(String.valueOf(jTextField4));
jTextField5.setText(String.valueOf(jTextField5));
}
}


Könntest du, wenn du dich, wie es ja aussieht, damit auskennst, bitte mehr auf mein Problem statt auf den Rest der Oberfläche eingehen? Oder geht das vielleicht gar nicht, wenn du den Rest des Quelltextes nicht kennst? Oder hast du mir meine Frage schon beantwortet, ohne dass ich es bemerkt habe?
Nach oben
Gast





BeitragVerfasst am: 10 Okt 2010 18:18   Titel: Antworten mit Zitat

Ich glaube, ich habe deine Frage schon beantwortet.
Das kann ich aber nur vermuten, solange ich den Rest deines Quelltextes nicht kenne.

---

double jTextField1=0;

Diese Zeile definiert eine Double-Variable mit dem Namen "jTextField1" und der Initialisierung "0.0". Das ist einfach nur eine Variable wie

double a=0;

und hat mit einem Textfeld nichts zu tun außer der Ähnlichkeit im Namen.

double jTextField1=a;

Das hättest du auch schreiben können, es hätte aber zu 99,9% eine Fehlermeldung verursacht und zu 0,1% die Variable z.B. mit dem Ascii-Wert von a, also 97 belegt.

In der Zeile:

jTextField1=Double.parseDouble(jTextField1.getText());

versuchst du nun einen String(Textfeld)-Befehl auf deine Double-Variable anzuwenden. Das kann nicht funktionieren.

Du müsstest (an geeigneter Stelle im Quelltext) ein Textfeld definieren, z.B. so:

JTextField text1 = new JTextField();

dann (an geeigneter Stelle) eine Double-Variable initialisieren, z.B. so:

double txt2double1 = 0.0;

und dann erst versuchen den Inhalt des Textfeldes zu einem Double-Wert zu parsen. Das kann auch schiefgehen, deshalb wäre ein Exception-Handling dringend empfehlenswert, aber für Anfänger nicht ganz so einfach.

txt2double1 = Double.parseDouble(text1.getText());

Jetzt kannst du mit deiner Double-Variable rechnen.
Nach oben
Gast





BeitragVerfasst am: 10 Okt 2010 18:44   Titel: Antworten mit Zitat

Okay danke, das hilft mir schon mal weiter.
Den Fehler zum String "nicht vorhanden" konnte ich jetzt auch finden.


Exel2 hat folgendes geschrieben:
versuchst du nun einen String(Textfeld)-Befehl auf deine Double-Variable anzuwenden.


Nein.
Nach oben
Gast





BeitragVerfasst am: 10 Okt 2010 18:55   Titel: Antworten mit Zitat


UltrasMD hat folgendes geschrieben:
Okay danke, das hilft mir schon mal weiter.
Den Fehler zum String "nicht vorhanden" konnte ich jetzt auch finden.


Exel2 hat folgendes geschrieben:
versuchst du nun einen String(Textfeld)-Befehl auf deine Double-Variable anzuwenden.


Nein.



WilhelmFCB hat folgendes geschrieben:

double jTextField1=0;
jTextField1=Double.parseDouble(jTextField1.getText());


Doch.

".getText()" erfordert einen String (Klick). Und jTextField1 ist hier ziemlich eindeutig eine Double-Variable.
Nach oben
Beiträge der letzten Zeit anzeigen:   
Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1



Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2002 phpBB Group