Prog mit fehlern

Status
Nicht offen für weitere Antworten.
A

Anfänger

Gast
Hilfeeeee dieses Prog soll den Lohn berechnen. Funzt aber net. Was ist denn daran falsch?????

Code:
import java.io.*;

public class BerechnungLohn
{
	public static void main (String[]args)throws IOException
	{
		int auswahl;
		auswahl = 0;
		menu();
	}
	public static void cls(int rows)
	{
		for(int zahl=0;zahl<rows;zahl++)
		{
			System.out.println("\n");
		}
	}
	public static void menu() throws IOException
	{
		personendaten();
		lohnformauswahl();
		beenden();
		
		int auswahl_lohn;
		BufferedReader eingabe = new BufferedReader(new InputStreamReader(System.in));
		
		cls(40);
		
		
		System.out.println ("<<<<<Willkommen zur Lohnberechnung>>>>>\n\n");
		System.out.println ("<1> Personendaten eingeben");
		System.out.println ("<2> Lohnformauswahl");
		System.out.println ("Ihre Wahl: ");
		
		switch(auswahl_lohn)
		{
			case 1: personendaten();
			break;
			case 2: lohnformauswahl();
			break;
			break;
			default: menu();
	}
}
		public static void personendaten() throws IOException
		{
			String eingabe;
			
			System.out.println("Bitte geben Sie Ihren Vor- und Nachnamen ein: ");
			BufferedReader tastatur1 = new BufferedReader(new InputStreamReader(System.in));
			String eingabe1 = tastatur1.readLine();
			
			System.out.println("Bitte geben Sie Ihre Straße und Hausnummer ein: ");
			BufferedReader tastatur1 = new BufferedReader(new InputStreamReader(System.in));
			String eingabe1 = tastatur1.readLine();
		
			System.out.println("Bitte geben Sie Ihre PLZ und den Wohnort ein: ");
			BufferedReader tastatur1 = new BufferedReader(new InputStreamReader(System.in));
			String eingabe1 = tastatur1.readLine();
		
			System.out.println("Bitte geben Sie Ihre Personalnummer ein: ");
			BufferedReader tastatur1 = new BufferedReader(new InputStreamReader(System.in));
			String eingabe1 = tastatur1.readLine();
		}
		public static void lohnformauswahl() throws IOException
		{
			
			zeitlohn();
			stueckzeitakkord();
			stueckgeldakkord();
			praemienlohn();
			
				String eingabe;
	   
	
		System.out.println("Lohnformauswahl");
	
		System.out.println ("\n\nZeitlohn........................1");
		System.out.println ("Stueckzeitakkord....................2");
		System.out.println ("Stueckgeldakkord....................3");
		System.out.println ("Praemienlohn........................4");
		System.out.println ("\n\nBitte waehlen Sie durch Eingabe der entsprechenden Ziffer:");
		
		BufferedReader tastatur = new BufferedReader(new InputStreamReader(System.in));
		eingabe = tastatur.readLine();
		
		switch (auswahl2)
		{
			case 1: zeitlohn();
			break;
			case 2: stueckzeitakkord();
			break;
			case 3: stueckgeldakkord();
			break;
			case 4: praemienlohn();
	}
}
			public static double zeitlohn() throws IOException
			{
				double stundenlohn = double.parseDouble (args[0]);
				double stunden = double.parseDouble (args[1]);
				double ergebnis;
				
				System.out.println("<<<<<Zeitlohnberechnung>>>>>>\n");
				
				System.out.println("Bitte geben Sie Ihren Stundenlohn ein: ");
				BufferedReader tastatur1 = new BufferedReader(new InputStreamReader(System.in));
				String eingabe1 = tastatur1.readLine();
				
				System.out.println("Bitte geben Sie die Stundenanzahl ein: ");
				BufferedReader tastatur2 = new BufferedReader(new InputStreamReader(System.in));
				String eingabe2 = tastatur2.readLine();
				
				ergebnis = (stundenlohn * stunden);
				return ergebnis;
			}
 

mic_checker

Top Contributor
Also vielleicht solltest du mal auf die Compiler-Fehlermeldungen achten....


Anfänger hat gesagt.:
Hilfeeeee dieses Prog soll den Lohn berechnen. Funzt aber net. Was ist denn daran falsch?????

Code:
import java.io.*;

public class BerechnungLohn
{
	public static void main (String[]args)throws IOException
	{
		int auswahl;
		auswahl = 0;
		menu();
	}
	public static void cls(int rows)
	{
		for(int zahl=0;zahl<rows;zahl++)
		{
			System.out.println("\n");
		}
	}
	public static void menu() throws IOException
	{
		personendaten();
		lohnformauswahl();
		beenden();

Wo bitte steht deine Methode beenden? Die existiert nicht, somit kannst du diese auch nicht aufrufen...

Code:
		int auswahl_lohn;
		BufferedReader eingabe = new BufferedReader(new InputStreamReader(System.in));
		
		cls(40);
		
		
		System.out.println ("<<<<<Willkommen zur Lohnberechnung>>>>>\n\n");
		System.out.println ("<1> Personendaten eingeben");
		System.out.println ("<2> Lohnformauswahl");
		System.out.println ("Ihre Wahl: ");
		
		switch(auswahl_lohn)
		{
			case 1: personendaten();
			break;
			case 2: lohnformauswahl();
			break;
			break;
			default: menu();
	}
}
		public static void personendaten() throws IOException
		{
			String eingabe;
			
			System.out.println("Bitte geben Sie Ihren Vor- und Nachnamen ein: ");
			BufferedReader tastatur1 = new BufferedReader(new InputStreamReader(System.in));
			String eingabe1 = tastatur1.readLine();
			
			System.out.println("Bitte geben Sie Ihre Straße und Hausnummer ein: ");
			BufferedReader tastatur1 = new BufferedReader(new InputStreamReader(System.in));
			String eingabe1 = tastatur1.readLine();
		
			System.out.println("Bitte geben Sie Ihre PLZ und den Wohnort ein: ");
			BufferedReader tastatur1 = new BufferedReader(new InputStreamReader(System.in));
			String eingabe1 = tastatur1.readLine();
		
			System.out.println("Bitte geben Sie Ihre Personalnummer ein: ");
			BufferedReader tastatur1 = new BufferedReader(new InputStreamReader(System.in));
			String eingabe1 = tastatur1.readLine();
		}

Arg....Was du da probierst kann nicht funktionieren....verwende andere Namen für deine Variablen, der erste Block ist noch ok...danach musst du schon andere Namen als tastatur1 und eingabe1 verwenden.


Code:
		public static void lohnformauswahl() throws IOException
		{
			
			zeitlohn();
			stueckzeitakkord();
			stueckgeldakkord();
			praemienlohn();

Selber Fehler wie bei beenden()...Die Methoden stueckgeldakkord,praemienlohn und stueckzeitakkord existieren nicht. Demnach kannst du sie nicht aufrufen..

Code:
				String eingabe;
	   
	
		System.out.println("Lohnformauswahl");
	
		System.out.println ("\n\nZeitlohn........................1");
		System.out.println ("Stueckzeitakkord....................2");
		System.out.println ("Stueckgeldakkord....................3");
		System.out.println ("Praemienlohn........................4");
		System.out.println ("\n\nBitte waehlen Sie durch Eingabe der entsprechenden Ziffer:");
		
		BufferedReader tastatur = new BufferedReader(new InputStreamReader(System.in));
		eingabe = tastatur.readLine();
		
		switch (auswahl2)
		{

Wo bitte hast du auswahl2 her? Ich schätze mal du willst auf eingabe zugreifen, diesen String musst du in int parsen und den kannst du bei switch dann verwenden.

Code:
			case 1: zeitlohn();
			break;
			case 2: stueckzeitakkord();
			break;
			case 3: stueckgeldakkord();
			break;
			case 4: praemienlohn();
	}
}
			public static double zeitlohn() throws IOException
			{
				double stundenlohn = double.parseDouble (args[0]);
				double stunden = double.parseDouble (args[1]);
				double ergebnis;

Es heisst Double.parseDouble(...) . Siehe:

Code:
            double stundenlohn = Double.parseDouble (args[0]);
            double stunden = Double.parseDouble (args[1]);

ABER: Du übergibst parseDouble args[0] und args[1]....das kann nicht funktionieren, weil der Methode zeitlohn() kein Array namens args[] bekannt ist....wolltest du das nicht ursprünglich in main reinpacken?
 
A

Anfänger

Gast
Die fehlenden Methoden will ich noch in das Prog reinmachen. Wollte nur wissen was bis jetzt falsch ist. Bin absoluter Anfänger muss aber leider dieses komplette Prog schreiben und weiß nicht wirklich was ich da tue. Sorry
 

mic_checker

Top Contributor
Sorry wenn ich das sagen muss, aber man merkt das du nicht weisst was du da tust.

Vielleicht solltest du dich ersteinmal noch mal genauer mit der Sprache Java beschäftigen. Schau mal ins Unterforum "Bücher,Tutorials ... " - da sind einige hilfreiche Links.

Wenn du dann immer noch Probleme hast , kannst du ja immernoch posten.

Das "Programm" sieht eher so aus , als hättest du es zusammengewürfelt...
 
A

Anfänger

Gast
Genau das ist es auch. Das problem ist dass ich gar keine Zeit habe mir alles beizubringen weil das prog nächste woche abgegeben werden muss.
 
A

Anfänger

Gast
Ich schaff es nur alle teile des Programms einzeln zu programmieren und krieg die dann aber nicht zusammen. Hier mein selbst programmiertes menü:


Code:
import java.lang.*;
import java.io.*;

public class Lohn
{
	public static void main (String[]args) throws IOException
	{
		menue1();
		personendaten();
		int auswahl = Integer.parseInt(args[0]);
		int auswahl2 = Integer.parseInt(args[1]);
	}
	public static void menue1() throws IOException
	{
		
		String eingabe;
	   
	
		System.out.println("\nWillkommen zum Lohnberechnungsprogramm");
	
		System.out.println ("\n\nPersonendaten eingabe     <1>");
		System.out.println ("Lohnformauswahl           <2>");
		System.out.println ("Programm beenden          <3> ");
		System.out.println ("\n\nBitte waehlen Sie durch Eingabe der entsprechenden Ziffer:");
		
		BufferedReader tastatur = new BufferedReader(new InputStreamReader(System.in));
		eingabe = tastatur.readLine();
		
	}
	public static void personendaten()throws IOException
	{
		System.out.println("\nBitte geben Sie Ihren Vor- und Nachnamen ein: ");
		BufferedReader tastatur1 = new BufferedReader(new InputStreamReader(System.in));
		String eingabe1 = tastatur1.readLine();
		
		System.out.println("Bitte geben Sie den Strassennamen und Strassennummer ein: ");
		BufferedReader tastatur2 = new BufferedReader(new InputStreamReader(System.in));
		String eingabe2 = tastatur2.readLine();
		
		System.out.println("Bitte geben Sie Ihre Postleitzahl und den Wohnort ein: ");
		BufferedReader tastatur3 = new BufferedReader(new InputStreamReader(System.in));
		String eingabe3 = tastatur3.readLine();		
}
}
 
S

Spacerat

Gast
Mal Nägel mit Köpfen... (Zeilen-Nummern vom Original:)

1.: In Zeilen 54, 58 & 62:
Compilation Error: duplicate local variable "tastatur1"
Das heisst: tastatur1 ist doppelt (in diesem Fall sogar 4x) vorhanden.
Lösung hierfür: TypDefinition "BufferedReader" in den o.A. Zeilen entfernen.

2.: In Zeilen 55, 59 & 63:
Compilation Error: duplicate local variable "eingabe1"
Das heisst: eingabe1 ist doppelt (in diesem Fall sogar 4x) vorhanden.
Lösung hierfür:
a) Zeile 47 wie folgt ändern: String[] eingabe = new String[4];
b) o.A. + Zeile 51 wie folgt ändern: eingabe[X] = tastatur1.readLine();
für X sind dabei von Oben nach Unten die Ziffern 0-3 zu werwenden.

3. in Zeilen 22, 69, 70, 71, 91, 93 & 95:
Compilation Error: Method xxx() is undefined
Das heisst diverse Methoden wurden noch nicht definiert.
Lösung hierfür: Methoden "beenden()", "stueckzeitakkord()", "stueckgeldakkord()" & "premienlohn()" definieren.

4. in Zeile 87:
Compilation Error: auswahl2 cannot be resolved
Das heisst auswahl2 konnte nicht aufgelöst werden.
Lösung hierfür: int auswahl2 definieren. Z.B. inZeile 74.

5. in Zeilen 101 & 102:
Compilation Error: Syntax error on token "double", invalid Expression
Das beschreibt schlicht und ergreifend einen Syntax-Fehler.
Lösung hierfür: Zeilen wie folgt ändern:
101 double stundenlohn = new Double(args[0]);
102 double stunden = new Double(args[1]); ...daraus folgt dann...

6. in Zeilen 101 & 102:
Compilation Error: args is undefined
Das heisst die Variable args wurde noch nicht deklariert.
Lösung hierfür: in der main()-Methode "BerechnungLohn.args = args; einfügen und vor der main()-Methode private static String[] args; einfügen.

7. ferner müssen die int-Variablen auswahl_lohn und auswahl2 mit den Werten aus den BufferedReader (n) gefüllt werden. Das ist nicht ganz trivial und ich muß dazu auch erst mal nachlesen.

Korregier erstmal... hast ja genug zu tun :D

cu bis denne
 

mic_checker

Top Contributor
In deinem Programm fehlt die richtige Struktur, bzw. der "Sinn" - Beispiele:

Anfänger hat gesagt.:
Ich schaff es nur alle teile des Programms einzeln zu programmieren und krieg die dann aber nicht zusammen. Hier mein selbst programmiertes menü:


Code:
	public static void personendaten()throws IOException
	{
		System.out.println("\nBitte geben Sie Ihren Vor- und Nachnamen ein: ");
		BufferedReader tastatur1 = new BufferedReader(new InputStreamReader(System.in));
		String eingabe1 = tastatur1.readLine();
		
		System.out.println("Bitte geben Sie den Strassennamen und Strassennummer ein: ");
		BufferedReader tastatur2 = new BufferedReader(new InputStreamReader(System.in));
		String eingabe2 = tastatur2.readLine();
		
		System.out.println("Bitte geben Sie Ihre Postleitzahl und den Wohnort ein: ");
		BufferedReader tastatur3 = new BufferedReader(new InputStreamReader(System.in));
		String eingabe3 = tastatur3.readLine();		
}
}

Hier liest du über Standardeingabe Daten ein, speicherst das eingegebene in nem String und damit wars das in der Methode. Was ist der Sinn der Methode personendaten() ?

Du willst doch mit Sicherheit nach Eingabe der ganzen Sachen auf diese Daten zugreifen können oder? Wenn du das so wie oben machst, kann das nichts werden.....

Code:
   public static void main (String[]args) throws IOException
   {
      menue1();
      personendaten();
      int auswahl = Integer.parseInt(args[0]);
      int auswahl2 = Integer.parseInt(args[1]);
   }

Du rufst zuerst eine Methode auf, die ein Menü ausgeben soll. So weit so gut. Danach rufst du personendaten auf. Warum?

Anschließend weisst du auswahl und auswahl2 was aus args zu - hast du irgendwelche Paramter die das verhalten deines programms beeinflussen (ich spreche von Kommandozeilenparametern) ?
So oder so machts keinen Sinn....

Code:
   public static void menue1() throws IOException
   {
      
      String eingabe;
      
   
      System.out.println("\nWillkommen zum Lohnberechnungsprogramm");
   
      System.out.println ("\n\nPersonendaten eingabe     <1>");
      System.out.println ("Lohnformauswahl           <2>");
      System.out.println ("Programm beenden          <3> ");
      System.out.println ("\n\nBitte waehlen Sie durch Eingabe der entsprechenden Ziffer:");
      
      BufferedReader tastatur = new BufferedReader(new InputStreamReader(System.in));
      eingabe = tastatur.readLine();
      
   }


Im Menü gibst du eine best. Auswahlstruktur aus...ist ja noch ok. Anschließend liest du die Eingabe ein und das wars.
Du selektierst nicht, überprüfst nicht ob korrekte Eingabe erfolgt ist etc.
Hinweis: Für solche Fälle lohnt sich der Einsatz einer do...while Schleife, in while kannst du überprüfen ob User Menüpunkt auswählen wollte der nicht existiert (Z.b. -1 oder 4)..

Etc..Pp...

@Anfänger: Bitte fass mein Post hier nicht falsch auf. Ich will dich nicht entmutigen oder sonst was. Nur bevor du sowas schreibst solltest du über best. Grundkenntnisse verfügen die du scheinbar nicht besitzt.
Ich kann mir auch nicht vorstellen das euer Lehrer/Prof von heut auf morgen so eine Aufgabe aufgibt und vorher nicht auf die Grundlagen eingegangen ist...Also musst vorher schon verpasst haben was zu lernen...
 

mic_checker

Top Contributor
Spacerat hat gesagt.:
6. in Zeilen 101 & 102:
Compilation Error: args is undefined
Das heisst die Variable args wurde noch nicht deklariert.
Lösung hierfür: in der main()-Methode "BerechnungLohn.args = args; einfügen und vor der main()-Methode private static String[] args; einfügen.
Guck dir seine Methode mal genauer an...erst weist er den doubles was zu, danach liest er die Werte dafür ein. Außerdem meint er mit args ja sicherlich das args aus

Code:
public static void main(String[] args)
{
}

7. ferner müssen die int-Variablen auswahl_lohn und auswahl2 mit den Werten aus den BufferedReader (n) gefüllt werden. Das ist nicht ganz trivial und ich muß dazu auch erst mal nachlesen.

Korregier erstmal... hast ja genug zu tun :D

cu bis denne
Das ist prinzipiell kein prob,nur wofür soll man es machen?

Code:
	      eingabe = tastatur1.readLine();
	      auswahl = Integer.parseInt(eingabe);

Dabei musst eigentlich noch NumberFormatException abfangen...

Btw. bist du javac -> Deutsch COmpiler? ;)



@ Anfänger: Vielleicht solltest du mal genau erklären was genau welche Methode machen soll - wenns nur für dich selbst ist. Ein Beispiel habe ich oben ja bereits erläutert : personendaten(). Was macht die Methode? Sie nimmt Daten von Personen auf, allerdings möchtest du nachdem der User die Daten eingegeben hat ja best. noch auf diese Daten zugreifen. Du könntest vielleicht eine eigene Klasse zur Aufnahme der Personendaten schreiben...etc.
 
S

Spacerat

Gast
@ mic_checker
Guck dir seine Methode mal genauer an...erst weist er den doubles was zu, danach liest er die Werte dafür ein. Außerdem meint er mit args ja sicherlich das args aus
Hab' ich gesehen. Steht in 5.

Das ist prinzipiell kein prob,nur wofür soll man es machen?

Code:
	      eingabe = tastatur1.readLine();
	      auswahl = Integer.parseInt(eingabe);

Dabei musst eigentlich noch NumberFormatException abfangen...

äh... Danke! So einfach ist das??? btw. woran man sehen kann

bist du javac -> Deutsch COmpiler? ;)

Nein! (eher ein Interpreter...) :D . Ich jag' die Beispielcodes (gerade für Anfänger) nur gerne mal durch Eclipse oder NetBeans. Und da ich auch Englisch recht gut kann, hab' ich kein Problem damit die Errors, Warnings etc. auch frei zu übersetzen. Wär ja mal nicht schlecht, wenn es für Java deutsche Entwicklungs-Software, SDK-Dokumentationen usw. geben würde. shame on me... Sooft angefangen und nie fertig gekriegt... is' einfach too much :autsch: . Wenn's mal fertig werden würde, wäre ich öhh... wohl ein Compiler.

@Anfänger: Ok...

8.: Hier ist mal der Code von meiner einer...
Code:
import java.io.*; 

public class BerechnungLohn 
{

   public static String[] args; // NICHT "private" SORRY!

   public static void main (String[]args)throws IOException 
   { 
   	  BerechnungLohn.args = args;
      int auswahl; 
      auswahl = 0; 
      menu(); 
   }

   public static void cls(int rows) 
   { 
      for(int zahl=0;zahl<rows;zahl++) 
      { 
         System.out.println("\n"); 
      } 
   } 
   public static void menu() throws IOException 
   { 
      personendaten(); 
      lohnformauswahl(); 
      beenden(); 

      int auswahl_lohn = 0; 
      BufferedReader eingabe = new BufferedReader(new InputStreamReader(System.in)); 
	       
      cls(40); 

      do {
      	try {
      		auswahl_lohn = new Integer(eingabe.readLine()).intValue();
      	} catch (NumberFormatException e) {
      		System.err.println(e.toString());
      	}
      } while (auswahl_lohn < 0 | auswahl_lohn > 2);
	       
      System.out.println ("<<<<<Willkommen zur Lohnberechnung>>>>>\n\n"); 
      System.out.println ("<1> Personendaten eingeben"); 
      System.out.println ("<2> Lohnformauswahl"); 
      System.out.println ("Ihre Wahl: "); 

      switch(auswahl_lohn) 
      {
         case 1: personendaten(); 
         break; 
         case 2: lohnformauswahl(); 
         break; 
      }
   }
   public static void personendaten() throws IOException 
   { 
   String[] eingabe = new String[4]; 
         
         System.out.println("Bitte geben Sie Ihren Vor- und Nachnamen ein: "); 
         BufferedReader tastatur1 = new BufferedReader(new InputStreamReader(System.in)); 
         eingabe[0] = tastatur1.readLine(); 
          
         System.out.println("Bitte geben Sie Ihre Straße und Hausnummer ein: "); 
         tastatur1 = new BufferedReader(new InputStreamReader(System.in)); 
         eingabe[1] = tastatur1.readLine(); 
       
         System.out.println("Bitte geben Sie Ihre PLZ und den Wohnort ein: "); 
         tastatur1 = new BufferedReader(new InputStreamReader(System.in)); 
         eingabe[2] = tastatur1.readLine(); 
       
         System.out.println("Bitte geben Sie Ihre Personalnummer ein: "); 
         tastatur1 = new BufferedReader(new InputStreamReader(System.in)); 
         eingabe[3] = tastatur1.readLine(); 
      } 
      public static void lohnformauswahl() throws IOException 
      { 
          
         zeitlohn(); 
         stueckzeitakkord(); 
         stueckgeldakkord(); 
         praemienlohn(); 
          
         String eingabe; 
         int auswahl2 = 0;
    
         System.out.println("Lohnformauswahl"); 
	    
         System.out.println ("\n\nZeitlohn........................1"); 
         System.out.println ("Stueckzeitakkord....................2"); 
	     System.out.println ("Stueckgeldakkord....................3"); 
	     System.out.println ("Praemienlohn........................4"); 
	     System.out.println ("\n\nBitte waehlen Sie durch Eingabe der entsprechenden Ziffer:"); 
	       
	     BufferedReader tastatur = new BufferedReader(new InputStreamReader(System.in)); 
	     eingabe = tastatur.readLine();

	     do {
	     	try {
	     		auswahl2 = new Integer(eingabe).intValue();
	     	} catch (NumberFormatException e) {
	     		System.err.println(e.toString());
	     	}
	     } while (auswahl2 <= 0 | auswahl2 > 4);

	     switch (auswahl2) 
	     { 
	        case 1: zeitlohn(); 
	        break; 
	        case 2: stueckzeitakkord(); 
	        break; 
	        case 3: stueckgeldakkord(); 
	        break; 
	        case 4: praemienlohn();
	     }
      }

      public static double zeitlohn() throws IOException 
	  { 
	       double stundenlohn = new Double(args[0]); 
	       double stunden = new Double(args[1]); 
           double ergebnis; 
             
           System.out.println("<<<<<Zeitlohnberechnung>>>>>>\n"); 
           
           System.out.println("Bitte geben Sie Ihren Stundenlohn ein: "); 
           BufferedReader tastatur1 = new BufferedReader(new InputStreamReader(System.in)); 
           String eingabe1 = tastatur1.readLine(); 
	             
           System.out.println("Bitte geben Sie die Stundenanzahl ein: "); 
           BufferedReader tastatur2 = new BufferedReader(new InputStreamReader(System.in)); 
           String eingabe2 = tastatur2.readLine(); 
	             
           ergebnis = (stundenlohn * stunden); 
           return ergebnis; 
      }

	  public static void beenden()
	  {
	  	
	  }

	  public static void stueckzeitakkord()
	  {
	  	
	  }

	  public static void stueckgeldakkord()
	  {
	  	
	  }

	  public static void praemienlohn()
	  {
	  	
	  }
}
 

mic_checker

Top Contributor
Code:
   	  BerechnungLohn.args = args;
Hab dein Post gelesen, aber wofür solls gut sein?

Code:
      int auswahl; 
      auswahl = 0;

Du deklarierst ne Variable und weisst ihr 0 zu und danach passiert nichts damit. Was machst du mit auswahl? So wie ich das seh dümpelt die vor sich in main rum..;)

Code:
   public static void menu() throws IOException 
   { 
      personendaten(); 
      lohnformauswahl(); 
      beenden();

Warum rufst du pauschal personendaten(),lohnformauswahl() und beenden() auf? Das entscheidet sich ja erst nach Eingabe....siehe do...while.

Code:
      int auswahl_lohn = 0; 
      BufferedReader eingabe = new BufferedReader(new InputStreamReader(System.in)); 
	       
      cls(40); 

      do {
      	try {
      		auswahl_lohn = new Integer(eingabe.readLine()).intValue();
      	} catch (NumberFormatException e) {
      		System.err.println(e.toString());
      	}
      } while (auswahl_lohn < 0 | auswahl_lohn > 2);
	       
      System.out.println ("<<<<<Willkommen zur Lohnberechnung>>>>>\n\n"); 
      System.out.println ("<1> Personendaten eingeben"); 
      System.out.println ("<2> Lohnformauswahl"); 
      System.out.println ("Ihre Wahl: ");


Das würde ich in die do...while reinpacken, jedes mal wenn er falsche zahl angibt wird somit das ganze Menü wieder ausgegeben. Empfinde ich persönlich als "besser"..

Also ungefähr so:
Code:
      	do
      	{      
      		System.out.println ("<<<<<Willkommen zur Lohnberechnung>>>>>\n\n");
      		System.out.println ("<1> Personendaten eingeben");
      		System.out.println ("<2> Lohnformauswahl");
      		System.out.println ("Ihre Wahl: ");
....

Code:
   public static void personendaten() throws IOException 
   { 
   String[] eingabe = new String[4]; 
         
         System.out.println("Bitte geben Sie Ihren Vor- und Nachnamen ein: "); 
         BufferedReader tastatur1 = new BufferedReader(new InputStreamReader(System.in)); 
         eingabe[0] = tastatur1.readLine(); 
          
         System.out.println("Bitte geben Sie Ihre Straße und Hausnummer ein: "); 
         tastatur1 = new BufferedReader(new InputStreamReader(System.in)); 
         eingabe[1] = tastatur1.readLine(); 
       
         System.out.println("Bitte geben Sie Ihre PLZ und den Wohnort ein: "); 
         tastatur1 = new BufferedReader(new InputStreamReader(System.in)); 
         eingabe[2] = tastatur1.readLine(); 
       
         System.out.println("Bitte geben Sie Ihre Personalnummer ein: "); 
         tastatur1 = new BufferedReader(new InputStreamReader(System.in)); 
         eingabe[3] = tastatur1.readLine(); 
      }

Hier kommt die bereits erwähnte Frage zu Tage: Wofür personendaten() ? Man will doch sicher auf die Personendaten später zugreifen, also muss man die Werte irgendwo speichern, nachdem du aus personendaten() zurückkehrst, bzw. die Methode beendet hast, "verlierst" du den Zugriff auf die eingegebenen Daten.
Ich glaube es wäre sinnvoll eine Klasse Personendaten zu schreiben.....nur falls man später noch drauf zugreifen will...anders macht die methode aber keinen sinn.

Außerdem ist es nicht notwendig ständig tastatur1 = .... zu schreiben, einmal reicht.

Code:
      public static void lohnformauswahl() throws IOException 
      { 
          
         zeitlohn(); 
         stueckzeitakkord(); 
         stueckgeldakkord(); 
         praemienlohn();


S.o. Wofür direkt aufrufen .... muss wieder erst nach Eingabe erfolgen.


Code:
         String eingabe; 
         int auswahl2 = 0;
    
         System.out.println("Lohnformauswahl"); 
	    
         System.out.println ("\n\nZeitlohn........................1"); 
         System.out.println ("Stueckzeitakkord....................2"); 
	     System.out.println ("Stueckgeldakkord....................3"); 
	     System.out.println ("Praemienlohn........................4"); 
	     System.out.println ("\n\nBitte waehlen Sie durch Eingabe der entsprechenden Ziffer:"); 
	       
	     BufferedReader tastatur = new BufferedReader(new InputStreamReader(System.in)); 
	     eingabe = tastatur.readLine();

	     do {
	     	try {
	     		auswahl2 = new Integer(eingabe).intValue();
	     	} catch (NumberFormatException e) {
	     		System.err.println(e.toString());
	     	}
	     } while (auswahl2 <= 0 | auswahl2 > 4);


Auch hier würd ich den Text in do..while packen.

Code:
	     switch (auswahl2) 
	     { 
	        case 1: zeitlohn(); 
	        break; 
	        case 2: stueckzeitakkord(); 
	        break; 
	        case 3: stueckgeldakkord(); 
	        break; 
	        case 4: praemienlohn();
	     }
      }

Fehlt da nicht hinter praemienlohn(); ein break ?

Code:
      public static double zeitlohn() throws IOException 
	  { 
	       double stundenlohn = new Double(args[0]); 
	       double stunden = new Double(args[1]); 
           double ergebnis; 
             
           System.out.println("<<<<<Zeitlohnberechnung>>>>>>\n"); 
           
           System.out.println("Bitte geben Sie Ihren Stundenlohn ein: "); 
           BufferedReader tastatur1 = new BufferedReader(new InputStreamReader(System.in)); 
           String eingabe1 = tastatur1.readLine(); 
	             
           System.out.println("Bitte geben Sie die Stundenanzahl ein: "); 
           BufferedReader tastatur2 = new BufferedReader(new InputStreamReader(System.in)); 
           String eingabe2 = tastatur2.readLine(); 
	             
           ergebnis = (stundenlohn * stunden); 
           return ergebnis; 
      }

An dieser Stelle sieht man das dein ...args von oben nicht nötig ist. Du liest Stundenlohn und Stundenanzahl über Tastatur Eingabe ein....d.h. du müsstest irgendwas in Richtung von folgendem haben:

Code:
public static double zeitlohn()
   {
   	double stundenlohn,ergebnis = 0;
		int anz_stunden;
		BufferedReader tastatur1;
		String eingabe;
		            
      System.out.println("<<<<< Zeitlohnberechnung >>>>>>\n");
   
      try
      {
	      tastatur1 = new BufferedReader(new InputStreamReader(System.in));
	      System.out.println("Bitte geben Sie Ihren Stundenlohn ein: ");	      
	      eingabe = tastatur1.readLine();
	      stundenlohn = Double.parseDouble(eingabe);
	            
	      System.out.println("Bitte geben Sie die Stundenanzahl ein: ");
	      eingabe = tastatur1.readLine();
	      anz_stunden = Integer.parseInt(eingabe);
	      	            
	      ergebnis = stundenlohn * anz_stunden;
     	}
	   catch(IOException ioe)
	   {
		   System.err.println("Fehler bei Eingabestream in zeitlohn()");
		   System.exit(-1);
		}
		catch(NumberFormatException nfe)
		{
			System.err.println("Ungültige Eingabe in zeitlohn()");
			System.exit(-1);	
		}	     
      
      return ergebnis;
	}


greets
mic_checker
 

mic_checker

Top Contributor
@Anfänger: Mit dieser Methode alleine wirst du aber noch nichts anfangen können.
Die andern Methoden müssen entsprechend implementiert werden.
Überleg dir halt ob du ne Klasse Personendaten anlegen willst oder nicht....könnte evtl. ganz brauchbar sein. Ist auch nicht allzuschwer. Ansonsten -> post
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
N Brauche dringend hilfe! Prog mit Fehlern Java Basics - Anfänger-Themen 2
F Erste Schritte Hausaufgaben-Prob. - Iterative Prog. Zahlen aufsummieren, wenn durch k>0 teilbar. Java Basics - Anfänger-Themen 5
M Erstes Prog. OS Abfrage Java Basics - Anfänger-Themen 9
T Quellen zum Java prog lernen mit Übungen? Java Basics - Anfänger-Themen 6
T GUI Prog. mit mehreren Klassen Java Basics - Anfänger-Themen 4
M Java-Prog soll Texte innerhalb Bildern erkennen Java Basics - Anfänger-Themen 2
J erstes Prog./Klasse - Konstruktur/Objekterstellung funktioniert nicht Java Basics - Anfänger-Themen 25
D Java-Prog. abkürzen ? Java Basics - Anfänger-Themen 13
G Taschenrechner Prog. Java Basics - Anfänger-Themen 30
S bräuchte hilfe bei einem kleinen prog Java Basics - Anfänger-Themen 3
G ein kleines java prog - hat aber einen fehler-bitte um hilfe Java Basics - Anfänger-Themen 5
hedges Prog braucht lange, schlecht programmiert? Java Basics - Anfänger-Themen 3
G Warum das Prog mehrmals das gleiche macht wegen ItemListener Java Basics - Anfänger-Themen 4
G Prog für ln2 Java Basics - Anfänger-Themen 2
G Prog starten Java Basics - Anfänger-Themen 6
L Hilfe mit java prog Java Basics - Anfänger-Themen 11
S noob frage zum prog Java Basics - Anfänger-Themen 8
M Herausfinden von welchem Pfad aus ein Prog gestartet wurde Java Basics - Anfänger-Themen 4
E folgendes kleines Prog läuft net Java Basics - Anfänger-Themen 10
M 3- Schichtenarchitektur aus vorhandenem Java Prog. erstellen Java Basics - Anfänger-Themen 6
C Kann mir jemand helfen was mit diesen Fehlern gemeint ist ? Java Basics - Anfänger-Themen 12
B Suche Programme mit Fehlern Java Basics - Anfänger-Themen 9
K Wahrheitstabelle mit Fehlern Java Basics - Anfänger-Themen 14
N Probleme beim abfangen von fehlern Java Basics - Anfänger-Themen 4
Spin Abfangen von Fehlern Java Basics - Anfänger-Themen 9
S Quelltext mit Fehlern Java Basics - Anfänger-Themen 12

Ähnliche Java Themen

Neue Themen


Oben