IF-Else Verknüpfungen

Chris_tunes

Mitglied
Hallo Leute!

Ich lerne gerade java Programmierung in der Schule, und habe als Hausübung folgendes Beispiel bekommen, leider habe ich irgendwo einen Fehler in meinem Quellcode!!!

Könnt ihr mir vielleicht helfen? Ich wäre euch echt über alles Dankbar!


Java:
/*Erstelle ein Programm, das die Urlaubstage für einen Arbeitnehmer berechnet.
			       

                                Geg.:    Lebensalter
				Ges.:    Anzahl der Urlaubstage
			
						16-20 Jahre  ...  25 Urlaubstage
						21-30 Jahre  ...  28 Urlaubstage
						31-40 Jahre  ...  31 Urlaubstage
						41-50 Jahre  ...  34 Urlaubstage
						51-65 Jahre  ...  37Urlaubstage
Überprüfen ob Arbeitnehmer zu jung oder zu alt!

*/


package IfVerschachtelungen;
import java.util.Scanner;

 class Urlaubstage { //definition class
    public static void main(String[] args) { //content starts
	 double Alter; //definition: Alter ( Age)
Scanner scanner = new Scanner(System.in); //definition of scanner
        System.out.println ("Bitte das Alter eingeben"); //input of Age
           Alter = scanner.nextInt();
        
          
	if (Alter < 16 && Alter > 65)   //if age less than 16 and more than 65
        {
	    System.out.println("Kein Urlaubsanspruch:"); //output: no vacation days
	} 
        else
        {
            if (Alter >= 16 && Alter <= 20)  //if Age equals and more than 16 years and equals less than 20 years: 
          {
              System.out.println("Anspruch auf 25 Tage Urlaub:"); //output: vacation days: 25 days
          }
         else if ( Alter <= 30) //Age equals or less than 30 years
          {
              System.out.println("Anspruch auf 28 Urlaubstage:"); //output: vacation days: 28 days
          }
        else if (Alter <= 40) //Age equals or less than 40 years
          {
              System.out.println("Anspruch auf 31 Urlaubstage:"); //output: vacation days: 31 days
          }
        else if (Alter <= 50) //age equals or less than 50 years
          {
              System.out.println("Anspruch auf 34 Urlaubstage:"); // output: vacation days: 34 days
          }
        else if (Alter <= 65) //age equals or less than 65 years
          {
              System.out.println("Anspruch auf 37 Urlaubstage:"); //output: vacation days: 37 days 
          }
        }
        
        
        
        
    }
 }


Ausgabe des Quellcodes:

HTML:
Bitte das Alter eingeben
14
Anspruch auf 28 Urlaubstage:
Anspruch auf 34 Urlaubstage:
Anspruch auf 37 Urlaubstage:

Dabei sollte hier angezeigt werden dass noch kein Urlaubsanspruch besteht, da erst ab 16 Jahre ein Urlaubsanspruch besteht. Selbiges gilt auch wenn ich ein anderes Alter eingeben, immer falsche Ausgaben.

Wir benutzen Netbeans (aktuelle Version 8.0) und ich auf meinem laptop habe Windows 8.1 am laufen!!
MFG Chris
 
Zuletzt bearbeitet:
Haha das ist echt mal lustig lesen :

Java:
 if (Alter < 16 && Alter > 65)

fällt dir da echt garnichts auf? 😀

Les es dir nochmal genau durch die Zeile und überlege
welche Alter damit angesprochen werden xD
 
Danke schon mal für eure Hilfe!!!

Oh...hihi...timmt, habs schon umgeändert....:toll:

Java:
if (Alter < 16 || Alter > 65)   //if age less than 16 and more than 65
        {
	    System.out.println("Kein Urlaubsanspruch:"); //output: no vacation days


Jetzt funktioniert die Ausgabe zwar unter 16 und über 65 Jahre, aber:

HTML:
Bitte das Alter eingeben
32
Anspruch auf 31 Urlaubstage:
Anspruch auf 34 Urlaubstage:
Anspruch auf 37 Urlaubstage:

Wir haben dieses Jahr nur eine Stunde Java programmierung, also sind wir auch dementsprechend noch nicht sehr weit gekommen, das meiste ist selbst Stundium. Erst nächstes Jahr geben wir dann ordentlich Gas.
 
Moin,

Java:
if (Alter < 16 || Alter > 65)   //if age less than 16 and more than 65
der Code ist ok <besser noch immer klammern: if( (Alter < 16) || (Alter > 65) )>, dein Kommentar aber immer noch falsch!!

..., aber:
HTML:
Bitte das Alter eingeben
32
Anspruch auf 31 Urlaubstage:
Anspruch auf 34 Urlaubstage:
Anspruch auf 37 Urlaubstage:
Sehr unwahrscheinlich!! Klappt bei mir problemlos!
Dann hast Du nicht den Code gepostet, mitr dem Du compilierst!

Gruß
Klaus
 
Zuletzt bearbeitet:
Doch ich poste genau den Code den ich netbeans IDE 8.0 codiert habe.

Das Kommentar habe ich jetzt ausgebessert, und wirklich vielen Dank alle die mir so tatkräftig helfen!!!!!

Danke, Danke, Danke!!

Java:
/*Erstelle ein Programm, das die Urlaubstage für einen Arbeitnehmer berechnet.
			        Geg.:    Lebensalter
				Ges.:    Anzahl der Urlaubstage
			
						16-20 Jahre  ...  25 Urlaubstage
						21-30 Jahre  ...  28 Urlaubstage
						31-40 Jahre  ...  31 Urlaubstage
						41-50 Jahre  ...  34 Urlaubstage
						51-65 Jahre  ...  37Urlaubstage
Überprüfen ob Arbeitnehmer zu jung oder zu alt!

*/


package IfVerschachtelungen;
import java.util.Scanner;

 class Urlaubstage { //definition class
    public static void main(String[] args) { //content starts
	 double Alter; //definition: Alter ( Age)
Scanner scanner = new Scanner(System.in); //definition of scanner
        System.out.println ("Bitte das Alter eingeben"); //input of Age
           Alter = scanner.nextInt();
        
          
	if ((Alter < 16) || (Alter > 65))   //if age less than 16 or more than 65
        {
	    System.out.println("Kein Urlaubsanspruch:"); //output: no vacation days
	} 
        else
        {
            if (Alter >= 16 && Alter <= 20)  //if Age equals and more than 16 years and equals less than 20 years: 
          {
              System.out.println("Anspruch auf 25 Tage Urlaub:"); //output: vacation days: 25 days
          }
         else if ( Alter <= 30) //Age equals or less than 30 years
          {
              System.out.println("Anspruch auf 28 Urlaubstage:"); //output: vacation days: 28 days
          }
        else if (Alter <= 40) //Age equals or less than 40 years
          {
              System.out.println("Anspruch auf 31 Urlaubstage:"); //output: vacation days: 31 days
          }
         if (Alter <= 50) //age equals or less than 50 years
          {
              System.out.println("Anspruch auf 34 Urlaubstage:"); // output: vacation days: 34 days
          }
         if (Alter <= 65) //age equals or less than 65 years
          {
              System.out.println("Anspruch auf 37 Urlaubstage:"); //output: vacation days: 37 days 
          }
        }
        
        
        
        
    }
 }

und hier einige Versuche:

HTML:
Bitte das Alter eingeben
21
Anspruch auf 28 Urlaubstage:
Anspruch auf 34 Urlaubstage:
Anspruch auf 37 Urlaubstage:
BUILD SUCCESSFUL (total time: 5 seconds)

Bitte das Alter eingeben
31
Anspruch auf 31 Urlaubstage:
Anspruch auf 34 Urlaubstage:
Anspruch auf 37 Urlaubstage:
BUILD SUCCESSFUL (total time: 2 seconds)

Bitte das Alter eingeben
49
Anspruch auf 34 Urlaubstage:
Anspruch auf 37 Urlaubstage:
BUILD SUCCESSFUL (total time: 4 seconds)

Mit 21 Jahren sollte man 28 Urlaubstage haben,
mit 31 Jahren sollte man 31 Urlaubstage haben,
und mit 49 Jahren sollte man 34 Urlaubstage haben...
 
Moin,

schau Dir mal Deine Zeilen 44 und 48 an !!!
Fällt dir da was auf 😱 ???:L

Tipp: '32' ist IMMER kleiner als '50' und auch IMMER kleiner als '65' :autsch:

Gruß
Klaus
 
Zuletzt bearbeitet:
Hallo Liebe Java Gemeinde!

Also wie ich das jetzt verstehe prüft mein "Programm" alle eingaben, die größer sind als der eingegebene Parameter (BSP: 32 Jahre), da 32 ja kleiner ist als als z.B.40,50, 60

Habe das Problem gerade erfolgreich gelöst, indem ich die Befehle in den If Anweisungen in Klammern gesetzt habe. Vielen Dank für eure Hilfe.

Quellcode sieht wie folgt aus:

Java:
/*Erstelle ein Programm, das die Urlaubstage für einen Arbeitnehmer berechnet.
			        Geg.:    Lebensalter
				Ges.:    Anzahl der Urlaubstage
			
						16-20 Jahre  ...  25 Urlaubstage
						21-30 Jahre  ...  28 Urlaubstage
						31-40 Jahre  ...  31 Urlaubstage
						41-50 Jahre  ...  34 Urlaubstage
						51-65 Jahre  ...  37Urlaubstage
Überprüfen ob Arbeitnehmer zu jung oder zu alt!

*/


package IfVerschachtelungen;
import java.util.Scanner;

 class Urlaubstage { //definition class
    public static void main(String[] args) { //content starts
	 double Alter; //definition: Alter ( Age)
Scanner scanner = new Scanner(System.in); //definition of scanner
        System.out.println ("Bitte das Alter eingeben"); //input of Age
           Alter = scanner.nextInt();
        
          
	if ((Alter < 16) || (Alter > 65))   //if age less than 16 or more than 65
        {
	    System.out.println("Kein Urlaubsanspruch:"); //output: no vacation days
            
	} 
        else
        {
            if ((Alter >= 16) && (Alter <= 20))  //if Age equals and more than 16 years and equals less than 20 years: 
          {
              System.out.println("Anspruch auf 25 Tage Urlaub:"); //output: vacation days: 25 days
              
          }
         else if ( (Alter <= 30) && (Alter <=39)) //Age equals or less than 30 years
          {
              System.out.println("Anspruch auf 28 Urlaubstage:"); //output: vacation days: 28 days
          }
        else if ((Alter <= 40) && (Alter <=49)) //Age equals or less than 40 years
          {
              System.out.println("Anspruch auf 31 Urlaubstage:"); //output: vacation days: 31 days
          }
        else if ((Alter <= 50) && (Alter <=64)) //age equals or less than 50 years
          {
              System.out.println("Anspruch auf 34 Urlaubstage:"); // output: vacation days: 34 days
          }
          else if (Alter <= 65) //age equals or less than 65 years
          {
              System.out.println("Anspruch auf 37 Urlaubstage:"); //output: vacation days: 37 days 
          }
        }
        
        
        
        
    }
 }

Vielen, vielen Danke für Eure Hilfe nochmal =)
 
Zuletzt bearbeitet:
Habe das Problem gerade erfolgreich gelöst, indem ich die Befehle in den If Anweisungen in Klammern gesetzt habe. Vielen Dank für eure Hilfe.


Das Problem bei Post #7 waren nur fehlende "else" Keywords vor den letzten beiden if-Anweisungen.
Die sind auf komische Art und Weise zwischen Post #1 und #7 verschwunden 😉

Java:
........
         else if ( (Alter <= 30) && (Alter <=39)) //Age equals or less than 30 years
          {
              System.out.println("Anspruch auf 28 Urlaubstage:"); //output: vacation days: 28 days
          }
        else if ((Alter <= 40) && (Alter <=49)) //Age equals or less than 40 years
          {
              System.out.println("Anspruch auf 31 Urlaubstage:"); //output: vacation days: 31 days
          }
        else if ((Alter <= 50) && (Alter <=64)) //age equals or less than 50 years
          {
              System.out.println("Anspruch auf 34 Urlaubstage:"); // output: vacation days: 34 days
          }
.........

Du kannst dir die 2ten Abfragen jeweils sparen! Diese ergeben keinen Sinn 😉
 

Zurück
Oben