Variablen Variable aus if in main nutzen

AdmAsgard

Mitglied
Hellas !

Bin Java Anfänger und hab ein Problem mit einem Berechnungsprogramm.

Das Programm berechnet (nach diversen Abfragen) einen Wert in verschiedenen Methoden, welcher am Ende als Variable in einer weiteren Berechnung verwendet werden soll.

Jetzt hab ich das Problem, dass der erste Werd (Flächenträgheitsmoment) zwar berechnet wird, ich diesen in der Schleife auch initialisiert habe, aber wenn ich im nächsten Schritt in die Variable für eine weitere Berechnung, welche ebenfalls in einer Methode stattfindet, ich die Meldung bekomme, dass die Variable nicht initialisiert ist. Hab es auch schon ohne Methode probiert, selbes Problem:

"Uncompilable source code - variable f might not have been initialized"

Wie bekomme ich die Variable in der Main wieder initialisiert mit dem Wert der vorher berechnet wurde ?

Suche schon seit drei Stunden im Internet nach Lösungen, hab auch einiges ausprobiert (globale Variablen, return,..), aber weiß leider nicht weiter. :bahnhof:

Hat jemand eine Idee ?

Hier der Code
Java:
import java.util.Scanner;

public class Aufgabe5_1028797_1 {

public static float qquerschnitt (float a, float l) {  
        float fmoment = (a*a*a*a)/12;
        return fmoment; 
            }
public static float kquerschnitt (float a, float l) {  
        float fmoment = ((a*a*a*a)*3,14)/4;
        return fmoment; 
            }
public static float iquerschnitt (float a, float l) {  
        float fmoment = (10*(a*a*a*a))/144;
        return fmoment; 
            }
public static float beidseitig (float f, float n, float l) {  
        float biegung = (n*(l*l*l))/(48*210000*f);
        return biegung; 
            }
public static float krag (float f, float n, float l) {  
        float biegung = (n*(l*l*l))/(3*210000*f);
        return biegung; 
        }      
            
    public static void main ( String[] args ) {   
        Scanner sc = new Scanner(System.in);

        System.out.println("Querschnittsform auswählen ")
        System.out.println("q....Quadratische Form"); 
        System.out.println("k....Kreisform");
        System.out.println("i....I-Träger");
        System.out.println();
        System.out.print("Auswahl: ");
        char m = sc.next().charAt(0);
        System.out.println("----------------------");
        System.out.print("Geben Sie die Abmessung in mm an: ");
        float a = sc.nextInt();
        System.out.print("Geben Sie die Länge in mm an: ");
        float l = sc.nextInt();
        System.out.print("Geben Sie die Kraft in N an: ");
        float n = sc.nextInt();
        
        float f;
        switch( m ) {   //Mehrfachanweisung
                case 'q':
                    System.out.println("Fmoment:" +qquerschnitt(a,l));
                    f = qquerschnitt(a,l);
                    break;
                case 'k':
                    System.out.println("Fmoment:" +kquerschnitt(a,l));
                    f = kquerschnitt(a,l);
                    break;
                case 'i':
                    System.out.println("Fmoment:" +iquerschnitt(a,l)));
                    f = iquerschnitt(a,l);
                    break;
            }
        System.out.println("----------------------");
        System.out.println("Auflagerform auswählen ")
        System.out.println("b....Beidseitig gelagert"); 
        System.out.println("k....Kragträger");
        System.out.println();
        System.out.print("Auswahl: ");
        char o = sc.next().charAt(0);

        switch( o ) {   //Mehrfachanweisung
                case 'b':
                    System.out.println("Maximale Durchbiegung:" +beidseitig(f,n,l));
                    break;
                case 'k':
                    System.out.println("Maximale Durchbiegung:" +krag(f,n,l));
                    break;
                    }
}
 
Zuletzt bearbeitet von einem Moderator:

HimBromBeere

Top Contributor
Wie bekomme ich die Variable in der Main wieder initialisiert mit dem Wert der vorher berechnet wurde ?
Gar nicht, eine Initialisierung wird nur ein einziges Mal pro Variable gemacht, und gibt - wie der Name schon andeutet - einen Anfangswert an. Dass du diese Fehlermeldung erhälst, liegt einfach daran, dass du auf eine Variable zugreifen möchtest, du u.U. noch überhaupt gar keinen Wert besitzt (nicht mal null). In der Deklaration schreibst du also z.B. einfach:
Java:
int meineVariable = 0;
Im Übrigen schreibt man Java-Code in JAVA-Tags (das sind die mit der Kaffetasse drei Zeichen links von dem, welches du genommen hast^^).

EDIT: Nochmal deutlicher: Was passiert in deiner Anwendung, wenn keine der zuälssigen Tasten gedrückt wurde? Antwort:
Code:
f
bleibt unbelegt, wird aber zum Schluss (bei der Durchbiegung) von dir in einem Methodenaufruf benötigt.
 
Zuletzt bearbeitet:

AdmAsgard

Mitglied
ups sry :)

Einen Wert hat die Variable, wenn ich den Wert in der Case-Anweisung ausgeben wird er richtig ausgegeben.

Kann ich den Variablenwert irgendwie einer zweiten "Hilfsvariable" in der Main zuweisen? Hab das nämlich probiert, aber es hat nicht funktioniert.

Was passiert wenn eine ungültige Menüauswahl getroffen wurde hab ich mir noch nicht überlegt. Wollte bisher nur einmal dass die Berechnungen funktionieren.

update: bzw. kann ich keine variable deklarieren, welche im main und in der case-anweisung funktioniert?
hab das mit einer globalen zwar versucht, aber da kommt die fehlermeldung, dass ich diese nicht in einer "statischen anweisung" verwenden kann.
 
Zuletzt bearbeitet:
G

Gast2

Gast
Eine gute Seite mit jede Menge Infos zur If-Schleife: If-Schleifen

Ansonsten wurde alles gesagt. Initialisiere die Variablen sauber und wenn du etwas außerhalb eines Codeblocks brauchst musst du es als Rückgabewert oder Attribut der Klasse definieren.

[OT]Sorry konnte ich mir nicht verkneifen...[/OT]
 

HimBromBeere

Top Contributor
Einen Wert hat die Variable, wenn ich den Wert in der Case-Anweisung ausgeben wird er richtig ausgegeben.
Wie hast´n das jetzt festgestellt, ich denke, dein Programm kompiliert gar nicht erst? Wie auch immer. Du gehst ja immer davon aus, dass wirklich nur zulässige Werte eingegeben und somit f IMMER belegt wird. Da der Kompiler aber diese Annahme nicht trifft/kennt, wirft er dir eben diesen Fehler um die Ohren. Du kannst auch vor dem "zweiten" Codeblovk erstmal prüfen, ob f mit einem Wert belegt wurde. Sollte dem so sein, kannst du fortfahren mit der nächsten Eingabe, ansonsten muss der erste Schritt widerholt werden. Dafür brauchst du keine Hilfsvariablen und keine Zauberei, nur ein wenig Köpfchen...

EDIT: Warum heißt dein Thema eigtl.
Variable aus if-Schleife in main nutzen
Ich seh da nirgends auch nur ein einziges if...
 

AdmAsgard

Mitglied
Ach sry, hab es zwischendurch mit einer if-schleife statt case gemacht. Wollte probieren ob es mit einer if-schleife funktioniert. Kommt aber die gleiche Fehlermeldung.

Doch es kompiliert schon, nur bei der letzten Berechnung wenn ich die Auswahl treffe kommt die Fehlermeldung.

Querschnittsform auswählen
q....Quadratische Form
k....Kreisform
i....I-Träger

Auswahl: q
----------------------
Geben Sie die Abmessung in mm an: 20
Geben Sie die Länge in mm an: 20
Geben Sie die Kraft in N an: 20
Fmoment:13333.333
----------------------
Auflagerform auswählen
b....Beidseitig gelagert
k....Kragträger

Auswahl: b
Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - variable f might not have been initialized
at Aufgabe5_1028797_1.main(Aufgabe5_1028797_1.java:72)
Java Result: 1

Der "Fmoment-Wert" ist der den ich benötige, da er ausgegeben wird, ist er in der Case-Anweisung auch initialisiert.
 
Zuletzt bearbeitet:

AdmAsgard

Mitglied
Ja ok es kompiliert nicht vollständig. Wie gesagt bin Anfänger.

Ich möchte ja den Fehler wegbekommen, aber weiß nicht wie. Die Variable ist deklariert und initialisiert, aber ich kann sie in der main-methode nicht verwenden.

Und ja den link hab ich mir angesehen, was bringt mir das jetzt, außer das ich versehentlich if-schleife statt abfrage geschrieben hab ?
 
G

Gast2

Gast
In deinem Switch Statement kann es passieren das 'f' nicht zugewiesen wird... Da meckert der Compiler.

Lösung 1:

'f' initial mit einem default belegen

Lösung 2:

Einen default case mit in das Switch Statement aufnehmen.

Lösung 3:

Exception werfen, Programm beenden, etc... wenn der default nicht verwendbar ist
 
Zuletzt bearbeitet von einem Moderator:

HimBromBeere

Top Contributor
Ich möchte ja den Fehler wegbekommen, aber weiß nicht wie. Die Variable ist deklariert und initialisiert, aber ich kann sie in der main-methode nicht verwenden.
Ich habe langsam das Gefühl, ich rede gegen eine Wand. Was genau hast du seit meiner ersten Antwort an deinem Code verändert?
 

AdmAsgard

Mitglied
Hatte garnichts verändert, hab nur aus versehen im betreff if-schleife geschrieben.

Hab jetzt float f=0; als initialwert gesetzt und es funktioniert.

danke für die hilfe !
 
G

Gast2

Gast
Und ja den link hab ich mir angesehen, was bringt mir das jetzt, außer das ich versehentlich if-schleife statt abfrage geschrieben hab ?

Du hast danach immer noch if Schleife geschrieben 3 mal sogar. Gewöhn es dir ab, denn es gibt schlicht keine If-Schleife. Du sagst ja auch nicht "Container" und meinst eine Variable oder? Das ist nicht böse gemeint von mir, aber du solltest schon darauf achten die Sachen korrekt zu bennen vor allem wenn dir das auch aufgezeigt wird :)

Zum lernen gehört halt auch die korrekte Bezeichnung dazu.

@HimBromBeere Hast natürlich recht, dass es eine If-Anweisung ist. Die Seite ist auch nicht von mir. Aber du verstehst was ich ausdrücken wollte von daher ^^
 
F

Frank Jüstel

Gast
Ich finde dieses Thema eine tolle Sache. Ich erinnere mich noch genau an die tollen jungen Jahre meines Dasein als ich mit dem alten Commodore C64 meine ersten sinnlichen Programmiererfahrungen erlebt habe. Ich wünsche dir viel Glück junger Programmierer!

Frank
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
N Variablen Variable in Main deklarieren und in anderer Methode nutzen Java Basics - Anfänger-Themen 12
K Übergabe des Wertes einer Variable aus main() in eine Klassenmethode Java Basics - Anfänger-Themen 8
F Threads Variable aus einem Thread in main Methode? Java Basics - Anfänger-Themen 9
D Von einer Methode auf eine lokale Variable in der Main zugreifen? Java Basics - Anfänger-Themen 15
A Main warten lassen bis Variable durch Button übergeben wird Java Basics - Anfänger-Themen 2
K Variable von main- Methode in Untermethode "holen" Java Basics - Anfänger-Themen 3
A main Variable in Methode ansprechen Java Basics - Anfänger-Themen 4
T Von Main auf eine Variable in void zugreifen Java Basics - Anfänger-Themen 4
O Variable Zimmergrößen per scanner einlesen Java Basics - Anfänger-Themen 5
richis-fragen String("AT") als StringObject-Variable deklarieren Java Basics - Anfänger-Themen 14
M Länge eines Arrays als Variable speichern möglich? Java Basics - Anfänger-Themen 14
R Liste in Variable speichern Java Basics - Anfänger-Themen 6
J Java long- in int-Variable umwandeln Java Basics - Anfänger-Themen 6
Nitrogames Variablen Variable aus JOptionPane Abfrage in Array einfügen Java Basics - Anfänger-Themen 4
E Variable von 1. Fenster an 2. Fenster übergeben. Java Basics - Anfänger-Themen 7
T Variable in Schleife deklarieren, Speicherplatz, Garbage Collector Java Basics - Anfänger-Themen 10
T Datum als Variable wert Java Basics - Anfänger-Themen 4
G Variable aktualisiert sich nicht in rekursiver Methode Java Basics - Anfänger-Themen 4
R Compiler-Fehler Variable wird nicht gefunden bzw. erkannt? Java Basics - Anfänger-Themen 2
Say super.methode / super.variable und super(variable) Java Basics - Anfänger-Themen 2
M variable in anderer funktion aufrufen Java Basics - Anfänger-Themen 10
N Was Passiert mit dem Namen einer Variable, wenn man diese einer Liste Hinzufügt Java Basics - Anfänger-Themen 16
T Variable von Objekten in einer Methode überprüfen Java Basics - Anfänger-Themen 26
U Wie mache ich die Variable xyz eindeutig/unique? Java Basics - Anfänger-Themen 20
JordenJost char variable funktioniert irgendwie nicht a+b ergibt nicht à Java Basics - Anfänger-Themen 4
M Variable Felderanzahl Java Java Basics - Anfänger-Themen 10
T Variable durch Action Listener ändern Java Basics - Anfänger-Themen 2
stormyark Fehler beim überschreiben einer Variable Java Basics - Anfänger-Themen 1
P Zähler Variable für mehrere Objekte Java Basics - Anfänger-Themen 6
S Eine Variable in einem Array speichern Java Basics - Anfänger-Themen 5
I Methoden Wieso wird mein Array "a" verändert und meine Variable "a" nicht? Java Basics - Anfänger-Themen 4
M Variable in einer Schleife initialisieren Java Basics - Anfänger-Themen 46
W Schleife und einmal variable++ zu viel Java Basics - Anfänger-Themen 20
M String mit Variable vergleichen Java Basics - Anfänger-Themen 9
M Methoden Wert einer Variable geht verloren? Java Basics - Anfänger-Themen 6
G variable kopieren bzw. woanders benutzen Java Basics - Anfänger-Themen 6
Ameise04 Variablen Inhalt einer Variable im Code verwenden? Java Basics - Anfänger-Themen 9
J Double Variable und Addition Java Basics - Anfänger-Themen 2
I Variable innerhalb Methode: Local variable test defined in an enclosing scope must be final or effectively final Java Basics - Anfänger-Themen 3
KogoroMori21 Variable im Parameter und Ohne Java Basics - Anfänger-Themen 5
Vivien Auf eine Variable von einer anderen Klasse aus zugreifen Java Basics - Anfänger-Themen 3
H Datentypen Wertebereich von <Klassenname> <Variable> Java Basics - Anfänger-Themen 12
M Private Variable Java Basics - Anfänger-Themen 2
idontknow707 Matrix nach z.B. Variable durchsuchen Java Basics - Anfänger-Themen 4
T Variable in for Schleife ansprechen ohne Array ? Java Basics - Anfänger-Themen 25
s.marcii Modulo in der Variable einsetzen - ist das möglich? Java Basics - Anfänger-Themen 2
N Variable aus anderen Variablen in statischer Klasse berechnen/abspeichern? Java Basics - Anfänger-Themen 4
Y Wie kann ich die Variable in der Try Catch returnen? Java Basics - Anfänger-Themen 3
B Inkrement von Variable Java Basics - Anfänger-Themen 8
V Variablen statische Variable einer Objektvariable zuordnen Java Basics - Anfänger-Themen 3
L Variable von einer Methode zu einer anderen Methode inkl. einer "Zwischenmethode" Java Basics - Anfänger-Themen 1
J JTextField Bezeichnung als Variable Java Basics - Anfänger-Themen 3
N Wie kann ich eine meine Variable Final machen? Java Basics - Anfänger-Themen 1
NeoLexx Variable für Array wird nicht korrekt übergeben Java Basics - Anfänger-Themen 45
M Enum-Variable HashMap zuweisen Java Basics - Anfänger-Themen 5
H Variable um 1 erhört ausgeben Java Basics - Anfänger-Themen 4
V Erste Schritte Eine Array-Variable mit Benutzereingaben befüllen Java Basics - Anfänger-Themen 3
J Fehlermeldung unklar. non-static variable player0 cannot be referenced from a static context Java Basics - Anfänger-Themen 4
P non-static variable cannot be referenced from a static context Java Basics - Anfänger-Themen 6
A Wie zwei zahlen in einer Variable speichern? Java Basics - Anfänger-Themen 7
W Problem mit dem Wert von boolean-Variable Java Basics - Anfänger-Themen 3
M Input/Output JTextField Eingabe in String Variable speichern Java Basics - Anfänger-Themen 15
A Kann man eine Methode als Variable speichern und danach noch verändern? Java Basics - Anfänger-Themen 6
L cannot find symbol variable Kon Java Basics - Anfänger-Themen 8
C Statischer Typ aber Variable nicht statisch? Java Basics - Anfänger-Themen 5
H Variable.methode aufstellen, verstehen Java Basics - Anfänger-Themen 2
R Warnung, wenn eine Variable eingegeben wird Java Basics - Anfänger-Themen 6
S Variable einscannen Java Basics - Anfänger-Themen 30
N Best Practice Rückgabe eines Terminal Befehls in eine Variable speichern Java Basics - Anfänger-Themen 27
M Erste Schritte Mit Variable verschiedene Texte in Textfeld einfügen Java Basics - Anfänger-Themen 27
J Input-Variable nicht sichtbar Java Basics - Anfänger-Themen 2
L Warum ist Variable null? Java Basics - Anfänger-Themen 3
E Variable (Vektor) in andere Methode übergeben Java Basics - Anfänger-Themen 4
A OOP Variable in anderer Klasse durch Methode aufrufen und einer anderen Variable gleichsetzen Java Basics - Anfänger-Themen 2
S Variable Parameter Java Basics - Anfänger-Themen 5
D Datei auslesen & Werte in Variable speichern Java Basics - Anfänger-Themen 12
P if - Statement erkennt variable nicht. Java Basics - Anfänger-Themen 12
J Ungewollte Wertveränderung einer Variable Java Basics - Anfänger-Themen 9
R Variablen Variable an FXML-Controller übergeben Java Basics - Anfänger-Themen 4
J Zugriff auf Variable in anderem Programm Java Basics - Anfänger-Themen 5
R variable istpositiv might not have been initialized Java Basics - Anfänger-Themen 2
A Methodenname aus variable Java Basics - Anfänger-Themen 2
L Variable aus einer Klasse in einer anderen Klasse nutzen Java Basics - Anfänger-Themen 6
P Methode soll Variable einer anderen Klasse ändern. Wie? Java Basics - Anfänger-Themen 1
Hanschyo Variable nicht initialisiert Java Basics - Anfänger-Themen 6
deatzi Variable aus If Abfrage später nutzen Java Basics - Anfänger-Themen 4
L Variable in If-Statement initialisieren Java Basics - Anfänger-Themen 4
C return kann nicht auf variable zugreifen Java Basics - Anfänger-Themen 26
S Wie erstelle ich eine Vorbedingung für eine Variable einer Methode ? Java Basics - Anfänger-Themen 5
S Warum kann ich nicht mehr als eine Variable in einer for Schleife deklarieren ? Java Basics - Anfänger-Themen 1
V Warum speichert meine String-Variable nummerische Werte? Java Basics - Anfänger-Themen 3
J Wert eines Arrays einer Variable zuweisen, sobald der Wert eines anderen Arrays eintritt Java Basics - Anfänger-Themen 2
DaCrazyJavaExpert Compiler-Fehler Variable nicht mit null initialisiert, trotzdem: NullPointerException Java Basics - Anfänger-Themen 28
A Erste Schritte Mein Programm erkennt die variable EinAus.readInt nicht Java Basics - Anfänger-Themen 15
Aprendiendo [JAVA-Syntax] (int... variable) bei einem Konstruktor Java Basics - Anfänger-Themen 8
F Variablen If else: Einer Variable einen Wert hinzufügen oder so? Java Basics - Anfänger-Themen 6
Aprendiendo Interpreter-Fehler "non-static variable this cannot be referenced from a static context" Java Basics - Anfänger-Themen 2
D Aufruf einer statischen Variable Java Basics - Anfänger-Themen 1
F [OOP] Auf eine Variable aus meherer Klassen zugreifen Java Basics - Anfänger-Themen 22
D Einer Variable automatisch Zahlen hinzuaadieren Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben