Methodenproblem

Katsuro

Mitglied
Kann mir jemand sagen wo mein Fehler liegt?

Java:
import java.io.*;

 public class epreistry
 {
// Unterprogramm bzw.  Methode
  public static double lala (double menge, double Preis) {
  double Reis;

     Reis = Preis*menge;
     return Reis; }


 public static void main (String[]args)
{

  //Die Eingabewerte erste Artikelnummer danach die Menge die gekauft wurde
  int Artnr = IO.readInt ("Geben sie die Artikelnummer des gekauften Artikels ein: ");
  int menge = IO.readInt ("Wieviele Einheiten des Artikels wurden gekauft? ");


  //Deklarieren der Strings für die Artikelnamen
  String Artikel1 = "bla";
  String Artikel2 = "blub";
  String Artikel3 = "bli";
  String Artikel4 = "blo";
  double Preis;
  double lala;
  double gepreis;


  gepreis =  lala;


  // Ausgabe wenn Artnr eins ist
  if (Artnr==1)
  {

    String Art = Artikel1;
    System.out.println ("Es wurden " + menge + " Einheiten des Artikels " + Artikel1 + " gekauft.");
    Preis = 6;
    System.out.println ("Die gesamtkosten für die Artikel betragen: " + gepreis);
  }
  }
  }

Fehlermeldung:

Java:
Compiliere C:\Users\Dennis\Documents\Java Programmierung\epreistry.java mit Java-Compiler
epreistry.java:31:14: variable lala might not have been initialized
  gepreis =  lala;
             ^
1 error
 

Luk10

Top Contributor
EDIT: Tut mir Leid hab mich verschaut.

Die Variable lalala ist eine lokale Variable und nicht initialisiert. Du musst sie zuerst initialisieren, damit du sie weiterverwenden kannst.

Beispielsweise:

Java:
public static void main(String[] args) {
  //Zeug davor
  double lala = 2; //Jeder beliebige double-Wert
  double gepreise = lala;
  //Zeug danach
}

-Luk-

Btw: Du solltest deine Varibalen sinnvoll benennen, sonst wirst du dich irgendwann nichtmehr auskennen in deinem Code. Variablen immer klein schreiben, Klassen immer groß!
 
Zuletzt bearbeitet:

Katsuro

Mitglied
Ja, aber ich dachte Lala wird in der methode initialisiert. weil Lala ist ja ein variabler wert weil der sich ja aus Menge*Preis ergibt. Und der Preis ist ja in der If-programmierung festgelegt. Also müsste Lala doch initialisiert sein.
 

Luk10

Top Contributor
Zu dem Zeitpunkt an dem du schreibst:
Code:
gepreis = lala
ist weder gepreis, noch lala initialisiert.

Somit bekommst du die Fehlermeldung
 

Final_Striker

Top Contributor
Du hast [c]lala[/c] einmal als Variable- und auch als Methodenname. So was sollte man vermeiden, weil das zu Verwechselungen führen kann.

Außerdem sollte man versuchen Klassennamen mit einem großen und Variablennamen mit einem kleinen Buchstaben zu benennen.
 

Katsuro

Mitglied
Ich verstehe es einfach nicht. Wieso findet der in der Endausgabe "Art" nicht? "Art" wurde doch in der If-Programmierung vorher festgelegt. Und die Endausgabe komtm erst danach, also müsste "Art" doch definiert sein.


(Ich wil jetzt auch mal mitreden können, und gebe jetzt ganz einfach mal zu... ich hab keine ahnung was deklarieren und initialisieren ist, könnt ihr mir das auch erklären?)

Java:
import java.io.*;

 public class KassensystemTry
 {
// Unterprogramm bzw.  Methode
  public static double epreis (double menge, double Preis) {
  double Reis;

     Reis = Preis*menge;
     return Reis; }
     


     
     
 public static void main (String[]args)
{

  //Die Eingabewerte erste Artikelnummer danach die Menge die gekauft wurde
  int Artnr = IO.readInt ("Geben sie die Artikelnummer des gekauften Artikels ein: ");
  int menge = IO.readInt ("Wieviele Einheiten des Artikels wurden gekauft? ");

  
  //Deklarieren der Strings für die Artikelnamen
  String Artikel1 = "Socken";
  String Artikel2 = "Höschen";
  String Artikel3 = "Strumpfhose";
  String Artikel4 = "Slip";
  double Preis;
  double gepreis;
  double epreis;

  


  // Ausgabe wenn Artnr eins ist
  if (Artnr==1)
  {

    String Art = Artikel1;
    System.out.println ("Es wurden " + menge + " Einheiten des Artikels " + Art + " gekauft.");
    Preis = 6.00;
    gepreis =  epreis (menge, Preis);
    System.out.println ("Die Gesamtkosten für die Artikel betragen: " + gepreis);
  }
  
  //Ausgabe wenn Artnr zwei ist
  if (Artnr==2)
  {

    String Art = Artikel2;
    System.out.println ("Es wurden " + menge + " Einheiten des Artikels " + Art + " gekauft.");
    Preis=4.95;
    gepreis =  epreis (menge, Preis);
    System.out.println ("Die Gesamtkosten für die Artikel betragen: " + gepreis);
  }
  
  //Ausgabe wenn Artnr drei ist
  if (Artnr==3)
  {

  String Art = Artikel3;
  System.out.println ("Es wurden " + menge + " Einheiten des Artikels " + Art + " gekauft.");
  Preis=3.39;
  gepreis =  epreis (menge, Preis);
  System.out.println ("Die Gesamtkosten für die Artikel betragen: " + gepreis);
  }
  
  //Ausgabe wenn Artnr vier ist
  if (Artnr==4)
  {

    String Art = Artikel4;
  System.out.println ("Es wurden " + menge + " Einheiten des Artikels " + Art + " gekauft.");
  Preis=5.99;
  gepreis =  epreis (menge, Preis);
  System.out.println ("Die Gesamtkosten für die Artikel betragen: " + gepreis);
  }
  
  //Ausgabe wenn Artnr größer als vier ist
  if (Artnr>4)
  {
  System.out.println ("Der von ihnen eingegeben Artikel befindet sich nicht in unserem System.");
     }
   //Endausgabe
       System.out.println ("########################################");
       System.out.println ("############# DamG Trade ###############");
       System.out.println ("########################################");
       System.out.println ();
       System.out.println ();
       System.out.println ("Artikel:          " + menge + " " + Art);
       



  }
  }

Fehlermeldung:


Java:
Compiliere C:\Users\Dennis\Documents\Java Programmierung\KassensystemTry.java mit Java-Compiler
KassensystemTry.java:91:65: cannot find symbol
symbol  : variable Art
location: class KassensystemTry
       System.out.println ("Artikel:          " + menge + " " + Art);
                                                                ^
1 error
 

Spin

Top Contributor
Ich ändere deinen Code kurz und poste ihn dann hier.

Vorab :

Java:
// initialisieren der variable zahl mit 0
int zahl = 0;

// deklarieren einer variable mit dem typ int
int zahl;

grüße





Hier :

Java:
package javaforumhelp;

import java.io.*;

/**
 * 
 * @author javaforumhelp
 *
 */
public class KassensystemTry {

		//Unterprogramm bzw.  Methode
		public static double epreis (double unit, double Preis) {
				double reis = 0;
	
				reis = Preis*unit;
			return reis; 
		}

		public static void main (String[]args) throws NumberFormatException, IOException {
			
			BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

			//Die Eingabewerte erste Artikelnummer danach die unit die gekauft wurde
			System.out.println("Geben sie die Artikelnummer des gekauften Artikels ein: ");
			int artnr = Integer.parseInt(br.readLine());
			System.out.println("Wieviele Einheiten des Artikels wurden gekauft? ");
			int unit = Integer.parseInt(br.readLine());

 
			//initialisieren der Strings für die Artikelnamen
			String Artikel1 = "Socken";
			String Artikel2 = "Höschen";
			String Artikel3 = "Strumpfhose";
			String Artikel4 = "Slip";
			double Preis;
			double gepreis;
			double epreis;

			String artikel = "";


 // Ausgabe wenn Artnr eins ist
 if (artnr==1)
 {
   System.out.println ("Es wurden " + unit + " Einheiten des Artikels " + Artikel1 + " gekauft.");
   Preis = 6.00;
   gepreis =  epreis (unit, Preis);
   System.out.println ("Die Gesamtkosten für die Artikel betragen: " + gepreis);
   artikel += Artikel1 +",";
 }
 
 //Ausgabe wenn Artnr zwei ist
 if (artnr==2)
 {

   System.out.println ("Es wurden " + unit + " Einheiten des Artikels " + Artikel2 + " gekauft.");
   Preis=4.95;
   gepreis =  epreis (unit, Preis);
   System.out.println ("Die Gesamtkosten für die Artikel betragen: " + gepreis);
   artikel += Artikel2 +",";
 }
 
 //Ausgabe wenn Artnr drei ist
 if (artnr==3)
 {


 System.out.println ("Es wurden " + unit + " Einheiten des Artikels " + Artikel3 + " gekauft.");
 Preis=3.39;
 gepreis =  epreis (unit, Preis);
 System.out.println ("Die Gesamtkosten für die Artikel betragen: " + gepreis);
 artikel += Artikel3 +",";
 }
 
 //Ausgabe wenn Artnr vier ist
 if (artnr==4)
 {
 System.out.println ("Es wurden " + unit + " Einheiten des Artikels " + Artikel4 + " gekauft.");
 Preis=5.99;
 gepreis =  epreis (unit, Preis);
 System.out.println ("Die Gesamtkosten für die Artikel betragen: " + gepreis);
 artikel += Artikel4 +",";
 }
 
 //Ausgabe wenn Artnr größer als vier ist
 if (artnr>4)
 {
 System.out.println ("Der von ihnen eingegeben Artikel befindet sich nicht in unserem System.");
   }
  //Endausgabe
      System.out.println ("########################################");
      System.out.println ("############# DamG Trade ###############");
      System.out.println ("########################################");
      System.out.println ();
      System.out.println ();
      System.out.println ("Artikel:          " + unit + " " + artikel.substring(artikel.length(), artikel.length()-1));
      



 }
 }

edit kommt gleich :p
 
Zuletzt bearbeitet:

jgh

Top Contributor
[JAVA=37] //Ausgabe wenn Artnr zwei ist
if (Artnr==2)
{

String Art = Artikel2;
System.out.println ("Es wurden " + menge + " Einheiten des Artikels " + Art + " gekauft.");
Preis=4.95;
gepreis = epreis (menge, Preis);
System.out.println ("Die Gesamtkosten für die Artikel betragen: " + gepreis);
}
[/code]

Dort deklarierst und initialisierst du eine Variable [c]Art[/c] UND auch nur innerhalb dieser Klammern der If-Verzweigung ist diese Variable sichtbar.

[java=22] String Art;[/code]
[java=41] Art = Artikel1;
[/code]
 
Zuletzt bearbeitet:

Katsuro

Mitglied
OK, das habe ich soweit verstanden, aber wie Schaffe ich es denn die Variable Art so zu initialisieren, dass sie im ganzen Programm sichtbar ist und auch noch variabel, also dass wenn ich für Artnr eine 1 eingebe, ,Artnr als Artikel1 initialisiert wird und Artikel1 als "Socken" und das im gesmaten Programm, also in der gesamten main.
 

Spin

Top Contributor
Siehe meinen editierten Eintrag.

Einfach in dem du die Variable außerhalb der Bedingungen angibst. Damit reserviert Java für diese Variable Platz und ist in anderen Blöcken zu sehen.

Sie ist immer noch lokal, nämlich im äußersten Block.

Global wäre sie wenn du sie außerhalb von Methoden definierst.
 

Ähnliche Java Themen

Neue Themen


Oben