Übergabe von Variablen

Status
Nicht offen für weitere Antworten.

Dr.Hu

Mitglied
Ich stehe etwas auf dem Schlauch,

Ich hab eine "Hauptprogramm"

Code:
public static void main(String args[]) throws IOException
  {
   // VariablenDefinition 
   // in jedem Spekrtum müssen k = 81 Werte sein (380-780nm)
   // derzeit m = 40 Werte für den Plankschen Strahler
   int i = 0, j = 0 , m = 81, n = 2;
   double k = 0, X = 0, Y = 0, Z = 0, x = 0, y = 0, z = 0;
   double Lampenlichtstrom=999, Lichtstromk, SumSLampe, SumSkLampe, Ra2, Ra10, Rff;

und hier die Variable Lampenlichtstrom definiert.
Später rufe ich dann eine Einleseroutine auf, die diverse Werte einliest (unter anderem einen Lampenlichtstrom)
Code:
einlesenLampendaten(lampenPfad,lampenDatei,Lampenlichtstrom,SkLampe);


An die Routine
Code:
static void einlesenLampendaten (String Pfad, String Datei, double Lichtstrom, double[][] Feld2d) throws IOException

wird somit der Wert Lampenlichtstrom=999 an die Variable Lichtstrom (Typ double) durch den Subroutineaufruf übergeben. Das funktioniert auch, weil die Ausgabe des Lichtstroms in oben beschriebener Subroutine den Wert
999 bringt. Dann belege ich in der Subroutine durch Einlesen aus einer Datei den Wert neu mit dem Wert 5000,
druck den Lichtstrom erneut aus und siehe da, der Variable ist mit dem Wert 5000 belegt.

Nun erwarte ich eigendlich, das der Wert 5000 auch in die Variable Lampenlichtstrom übergeben wird, also in der Hauptroutine ankommt, tut er aber nicht,
der Wert "oben ist weiterhin 999, warum?
 

bambi

Bekanntes Mitglied
Sieh Dir mal call-by-value und call-by-reference an. Ich denke mal, dass es daran liegen koennte. Ich weiss jetzt allerdings
aber auch nicht genau, wie Diene Methode aufgebaut ist...
An Deiner Stelle wuerde ich die Variablen direkt in die Klasse und nicht in die Main-Methode schreiben. Wenn Du dann
this.lampenlichtstrom = ... setzt, dann hast Du auf jeden Fall die richtigen Werte.

Ach uebrigens: nach der Java Konvetion werden Variablen immer klein geschrieben. Nur Klassennamen sind gross. :wink:
 

Dr.Hu

Mitglied
Ich hab verstanden, dass ich mich noch mit den Begriffen wie Klassen und Objekte auseinandersetzen muss.
Dusseliger weise hab ich halt nur "Fortran77" gelernt.
Auch der Hinweis die Variablen in die Klasse zu nehmen ist verstanden, mach ich in Zukunft, aber
jetzt mal schnell das Programm umbauen?

In meinem Programm hab ich derzeit jede Menge Felder definiert:

// Farbwerte der kennzeichnenden Lichtart für den 2 Grad Normalbeobachter
double[] X2k = new double[16];
double[] Y2k = new double[16];

und so definiert kann ich diese in meine Routinen hineinwerfen, verbiegen und bekomme
diese dann auch wieder zurück.

Kann mir jemand sagen wie der Code aussieht, damit das mit der Variablen Lampenlichtstrom auch
funktioniert?
 

bambi

Bekanntes Mitglied
Meinst Du sowas...
Code:
public class WeissNichtWas {
// Klassenvariablen
double Lampenlichtstrom=999, Lichtstromk, SumSLampe, SumSkLampe, Ra2, Ra10, Rff;

// hier ein paar Methoden...
//...

static void einlesenLampendaten (String Pfad, String Datei, double Lichtstrom, double[][] Feld2d) throws IOException
{
   this.Lampenlichtstrom= Lichtstrom;
   ...
}

public static void main(String args[]) throws IOException
{
   // VariablenDefinition
   // in jedem Spekrtum müssen k = 81 Werte sein (380-780nm)
   // derzeit m = 40 Werte für den Plankschen Strahler
   int i = 0, j = 0 , m = 81, n = 2;
   double k = 0, X = 0, Y = 0, Z = 0, x = 0, y = 0, z = 0;
   ...
   einlesenLampendaten (...);
   ...
}
 

Dr.Hu

Mitglied
Umbau gemäß Beispiel:

Code:
//Programm zur Lichtberechnungimport java.io.*; 
import java.io.*;
import java.math.*;
public class Licht
{
   //Definition der Klassenvariablen (globale Variable)
   double Lampenlichtstrom;
   // this.Lampenlichtstrom = Lampenlichtstrom;
   
   public static void main(String args[]) throws IOException
  {
   // VariablenDefinition

und in der Einleseroutine sieht das dann wie folgt aus:

Code:
static void einlesenLampendaten (String Pfad, String Datei, double[][] Feld2d) throws IOException
  {
   String thisLine;
   String newLine;
   double Lichtstrom;
   char zeichen;
   int i = 0;
   int j = 0;
      
   File file         = new File (Pfad + Datei);
   FileReader     fr = new FileReader(file);
   BufferedReader in = new BufferedReader (fr);
   
   // Kontrolle des eingelesenen Lampenlichtstroms
   // System.out.println("Lichtstrom der Lampe in der Subroutine vor dem Lesen der Lampendaten: " + this.Lampenlichtstrom + " Lumen");   
   
   // Einlesen vom Lichtstrom der Lampe (Angaben des Herstellers)
   // Länge des ersten Strings
   thisLine = in.readLine();
   int Stringlaenge = thisLine.length();
   // System.out.println(Stringlaenge);
   // Suche nach der Position des " "
   int Leerzeichenposition = thisLine.indexOf(" ");
   // System.out.println(Leerzeichenposition);
   Lichtstrom = Double.parseDouble(thisLine.substring(Leerzeichenposition+1,Stringlaenge));
   System.out.println("Lichtstrom der Lampe in der Subroutine nach dem Lesen der Lampendaten: " + Lichtstrom + " Lumen");   
   this.Lampenlichtstrom = Lichtstrom;

und dann hab ich die Fehlermeldung:

non static variable this cannot be reference from a static context

und wat nu?
Was ich meinte war, dass ich ja Felder aus der main - routine in die static voids übergebe und auch verändert wieder
zurück bekomme aber nicht verstehe, warum das bei einer dusselligen Variablen nicht funktioniert.
 

mic_checker

Top Contributor
Lampenlichtstrom ist ne Instanzvariable, du versuchst den Wert in ner Klassenmethode zu verändern. Du könntest ne Instanzmethode draus machen, in main ein Objekt erzeugen und dann auf dieses Objekt die Methode anwenden.

In der FAQ steht zu dem Thema ein Beitrag von Beni.

edit: oder was meintest du?
 

Dr.Hu

Mitglied
Na dann schau ich mal bei Beni nach,
für nen Anfänger ist die Antwort auf einem etwas zu hohen Niveau. Aber daran kann man ja arbeiten
 

mic_checker

Top Contributor
http://www.java-forum.org/de/viewtopic.php?t=15365

Wenn du irgendwas nicht genau verstehst kann ich das ganze auch gerne nochmal anders formulieren:

- Mach das static mal weg (bei der Methode).

in main legst du ein neues Objekt deiner Klasse an , ganz normal mit new...- falls du keinen eigenen Konstruktor definiert hast kannst du auf den Standardkonstruktor zurückgreifen...

Dann kannst du deine Methode aufrufen (das oben erzeugte Objekt ruft diese auf)....dann sollte er nicht mehr meckern wegen static.

Ansonsten sag bescheid wenn was nicht klar ist, Beni hat das ganze gut oben beschrieben.
 

Dr.Hu

Mitglied
Thanks a lot for the hinds. Ich muss da mal anders hinlangen, erst mal ein bischen mehr über objektorientierte Programmierung lesen. Werd heute Abend mal am Problem arbeiten. Vielen Dank, aber im Augenblick verstehe ich nur Bahnhof und Koffer klauen.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Problem bei Übergabe von Variablen Java Basics - Anfänger-Themen 1
R Vererbung Übergabe von Variablen der Superklasse an Subklasse mit "extends" Java Basics - Anfänger-Themen 5
F Variablen Übergabe von eingelesenen Variablen in neue Klasse Java Basics - Anfänger-Themen 15
A Übergabe von Variablen zu Paintmethode Java Basics - Anfänger-Themen 2
O Übergabe von Variablen Java Basics - Anfänger-Themen 9
K Übergabe einer im EventListener definierte variablen Java Basics - Anfänger-Themen 2
M Übergabe von Variablen in eine Klasse Java Basics - Anfänger-Themen 13
G Übergabe Variablen von Servlet zu JSP? Java Basics - Anfänger-Themen 4
M Konstruktor ohne Übergabe eines Wertes Java Basics - Anfänger-Themen 7
K Übergabe des Wertes einer Variable aus main() in eine Klassenmethode Java Basics - Anfänger-Themen 8
K Übergabe von Werten (zweidimensionales Array) aus einer Methode an zweidimensionales Array in main() Java Basics - Anfänger-Themen 3
S Übergabe von Arrays an Methoden Java Basics - Anfänger-Themen 20
Curtis_MC Parameter-Übergabe bei Klassen und Methoden Java Basics - Anfänger-Themen 12
D Methode mit Übergabe double und Rückgabe String Java Basics - Anfänger-Themen 2
L Methoden Übergabe von Parameter Java Basics - Anfänger-Themen 3
K Java Problem mit Übergabe von argumenten Java Basics - Anfänger-Themen 3
J Übergabe von Parametern an andere Methoden Java Basics - Anfänger-Themen 5
D Probleme mit der Übergabe einer BorderPane Java Basics - Anfänger-Themen 2
R Methoden Übergabe von einer Methodenvariable Java Basics - Anfänger-Themen 3
M Übergabe von Werten Java Basics - Anfänger-Themen 10
arjoopy Kapselung Übergabe von Objekten aus ArrayList Java Basics - Anfänger-Themen 4
C Erste Schritte Übergabe von Klassen Java Basics - Anfänger-Themen 2
C Methoden Objekte und Methode und Übergabe Java Basics - Anfänger-Themen 4
O Übergabe in eine andere Klasse Java Basics - Anfänger-Themen 3
M Übergabe / Rückgabe Java Basics - Anfänger-Themen 6
S Kapselung Objekt bei Übergabe an Konstruktor nicht initalisiert Java Basics - Anfänger-Themen 3
fLooojava Probleme bei der Übergabe einer Variable Java Basics - Anfänger-Themen 14
S OOP Übergabe eines Objektes? Java Basics - Anfänger-Themen 1
fLooojava OOP Übergabe/Output in Textfield Java Basics - Anfänger-Themen 4
U Übergabe von Objekten Java Basics - Anfänger-Themen 0
J ArrayList toString() Übergabe Fehler Java Basics - Anfänger-Themen 2
S Übergabe Java Basics - Anfänger-Themen 14
S Klassen Array: Übergabe von Klasse zur Main Java Basics - Anfänger-Themen 8
A NullPointerException bei Übergabe eines Array Java Basics - Anfänger-Themen 8
feardorcha Methodenaufruf Übergabe- und Rückgabewert Java Basics - Anfänger-Themen 5
D Klassen Problem - Übergabe an Konstruktor von Superklasse Java Basics - Anfänger-Themen 2
D Objekt Übergabe Java Basics - Anfänger-Themen 12
M Array Übergabe Java Basics - Anfänger-Themen 17
W Übergabe Stringzeilen von serieller Schnittstelle in andere Klasse Java Basics - Anfänger-Themen 3
B Übergabe Dateiname (String) an andere Klasse Java Basics - Anfänger-Themen 4
P Methoden Übergabe von Werten Java Basics - Anfänger-Themen 7
M Fragen zu Methoden (void/return), Übergabe von Parametern Java Basics - Anfänger-Themen 3
N Array Übergabe Java Basics - Anfänger-Themen 9
L Klassen Parameter Übergabe Java Basics - Anfänger-Themen 12
A OOP Übergabe eines Wertes an den enum Konstruktor Java Basics - Anfänger-Themen 12
Darth Simple Übergabe eines Strings an eine Methode Java Basics - Anfänger-Themen 3
A Frage zur Übergabe von Strings Java Basics - Anfänger-Themen 9
N Übergabe problem Java Basics - Anfänger-Themen 6
M Übergabe von VM Argumenten Java Basics - Anfänger-Themen 4
J Übergabe einer ArrayList an mehrere Threads Java Basics - Anfänger-Themen 3
E Übergabe von werten aus einem JDialog Java Basics - Anfänger-Themen 4
J Übergabe eines Arrays als Parameter Java Basics - Anfänger-Themen 2
S Übergabe von Frame-Objekt - kritisch? Java Basics - Anfänger-Themen 7
L JTabbedPane, richtige Übergabe von Tabs Java Basics - Anfänger-Themen 18
Z BigInteger Methoden und deren Übergabe Java Basics - Anfänger-Themen 3
G Wieso ist eine String-Übergabe keine by-reference-Zuweisung? Java Basics - Anfänger-Themen 7
M Problem bei der Übergabe von Werten Java Basics - Anfänger-Themen 7
G Übergabe von Parametern an JSP Java Basics - Anfänger-Themen 3
S Veränderung von Protected Daten durch Übergabe? Java Basics - Anfänger-Themen 3
K Übergabe der Variable für Farbe Java Basics - Anfänger-Themen 6
G List<.> nach Übergabe vergleichen? Java Basics - Anfänger-Themen 3
R Beiß mir die Zähne aus an der Request-Parameter-Übergabe! Java Basics - Anfänger-Themen 10
lin Übergabe an JPanel-Klasse Java Basics - Anfänger-Themen 3
S NullPointerException bei Array-Übergabe Java Basics - Anfänger-Themen 3
W Variabeln Übergabe Java Basics - Anfänger-Themen 14
F Großes Problem: Vector-Übergabe Java Basics - Anfänger-Themen 7
F Übergabe Vaterframe mit this und Fehlermeldung. Java Basics - Anfänger-Themen 2
D Fragen zu Methoden und Übergabe von Werten Java Basics - Anfänger-Themen 4
G Übergabe von Variablenwerten zwischen Methoden Java Basics - Anfänger-Themen 4
D Problem bei Übergabe von Werten an eine Methode Java Basics - Anfänger-Themen 2
H Übergabe eines Wertes an eine Bean --> Bean leer Java Basics - Anfänger-Themen 6
T Array-Übergabe Java Basics - Anfänger-Themen 7
M Windows Pfad-Übergabe.. Java Basics - Anfänger-Themen 6
S String mit Konstruktor (per Übergabe) initialisieren Java Basics - Anfänger-Themen 10
O Welcher Object-Lock-Pool bei static Variablen? Java Basics - Anfänger-Themen 3
T variablen klassen übergreifend Java Basics - Anfänger-Themen 12
T Variablen Java Basics - Anfänger-Themen 1
N Verständnis Frage zu Variablen Java Basics - Anfänger-Themen 3
M Aufsummieren von variablen Wertegrößen Java Basics - Anfänger-Themen 17
M Mehrere Daten/ Variablen Speichern Java Basics - Anfänger-Themen 9
J Speichern von zwei Variablen durch Auslesen aus einem Numberfield Java Basics - Anfänger-Themen 2
ashi Variablen aufrufen Java Basics - Anfänger-Themen 17
U Warum kann ich, auf private Variablen zugreifen, wenn ich ein Objekt in der Klasse, die private Variablen hat erstelle und dort drauf zugreifen will? Java Basics - Anfänger-Themen 7
B Konkatenieren eines Strings und inkremtierenden Zahl zu einer INT Variablen Java Basics - Anfänger-Themen 7
A 2 Strings vergleichen in einer methode wenn man mit Globalen variablen arbeitet Java Basics - Anfänger-Themen 12
C Konstruktoren und Variablen Java Basics - Anfänger-Themen 42
F Auf Variablen eines Konstruktors zugreifen Java Basics - Anfänger-Themen 4
N Variable aus anderen Variablen in statischer Klasse berechnen/abspeichern? Java Basics - Anfänger-Themen 4
M Wie kann ich bei int-Variablen im exception handler auf bestimmte Strings reagieren? Java Basics - Anfänger-Themen 5
M Warum dürfen Objekte einer Klasse auf statische Variablen dieser Klasse referenzieren? Java Basics - Anfänger-Themen 10
B Variablen Variablen übertragen ohne Klassen Java Basics - Anfänger-Themen 5
B Methoden Methoden haben kein Zugriff auf variablen Java Basics - Anfänger-Themen 4
T Java Swing - Dreieck zeichnen mit verschiedenen Variablen Java Basics - Anfänger-Themen 8
Arif Vererbung Methodenvererbung mit finalen Variablen Java Basics - Anfänger-Themen 1
M Wie kann ich ein Objekt erstellen, wenn sich der Klassenname in einer Variablen befindet? Java Basics - Anfänger-Themen 10
S Variablen Variablen in einer Schleife erstellen lassen Java Basics - Anfänger-Themen 11
J Ich brauche Hilfe bei einem Code (Variablen speichern) Java Basics - Anfänger-Themen 29
F Variablen Werte einer Klasse überschreiben Java Basics - Anfänger-Themen 4
N Speichern von Werten in Variablen nach Schließen des Programms Java Basics - Anfänger-Themen 3
J Frage dazu Variablen klassenübergreifend zu verändern Java Basics - Anfänger-Themen 22

Ähnliche Java Themen

Neue Themen


Oben