Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > Java
You last visited: Today at 06:46

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Hilfe bei if Funktion (Anfänger)

Discussion on Hilfe bei if Funktion (Anfänger) within the Java forum part of the Coders Den category.

Reply
 
Old   #1
 
FlareEniX's Avatar
 
elite*gold: 1
Join Date: Feb 2009
Posts: 423
Received Thanks: 54
Hilfe bei if Funktion (Anfänger)

Hallo,

ich bin gerade dabei Java zu lernen und komme bei dieser Übungsaufgabe nicht weiter. Das Programm soll überprüfen ob sich bei der Eingabe um ein Schaltjahr handelt. Für die Überprüfung gilt folgendes:
Ist die Jahreszahl durch 4 teilbar, dann ist es ein Schaltjahr, außer die Jahreszahl ist gleichzeitig auch durch 100teilbar, dann ist das Jahr kein Schaltjahr - es sei denn, die Jahreszahl ist gleichzeitig auch durch 400 teilbar, dann ist es doch wieder ein Schaltjahr

Code:
/* Schaltjahr: Das Programm überprüft ob das eingegebene Jahr
* ein Schaltjahr ist.
*/
import javax.swing.*;
public class Schaltjahr {
public static void main (String[] args) {
double d;
String eingabe;
eingabe = JOptionPane.showInputDialog("Gib das Jahr ein ");
d = Double.parseDouble(eingabe);
if ((d % 4 == 0) & (d % 100 == 0) && (d % 400 = 0) ) {
JOptionPane.showMessageDialog(null,"Es ist ein Schaltjahr");
} else {
if ((d % 4 == 0) & (d % 100 == 0) )) {
JOptionPane.showMessageDialog(null, "Es ist kein Schaltjahr");
}
} else {
if (d % 4 == 0) {
JOptionPane.showMessageDialog(null, "Es ist ein Schaltjahr");
}
}
}
}
Jedoch kann ich das Programm noch nicht starten da folgende Fehler auftreten:

Code:
D:\Java\Programme\JavaUebung03>javac Schaltjahr.java
Schaltjahr.java:16: error: illegal start of expression
if ((d % 4 == 0) & (d % 100 == 0) )) {
^
Schaltjahr.java:19: error: 'else' without 'if'
} else {
^

2 errors
FlareEniX is offline  
Old 05/30/2016, 18:10   #2


 
elite*gold: 575
Join Date: Feb 2013
Posts: 776
Received Thanks: 70
Hallo,

du hast in deinem IF-Statement ein & und ein = vergessen (bei d % 400 == 0). Außerdem sind keine zwei else-Statements möglich, ich würde das dann wie folgt als if-else schreiben:

Code:
/* Schaltjahr: Das Programm überprüft ob das eingegebene Jahr
* ein Schaltjahr ist.
*/

import javax.swing.*;

public class Schaltjahr {
    public static void main(String[] args) {
        double d;
        String eingabe;
        eingabe = JOptionPane.showInputDialog("Gib das Jahr ein ");
        d = Double.parseDouble(eingabe);
        if ((d % 4 == 0) && (d % 100 == 0) && (d % 400 == 0)) {
            JOptionPane.showMessageDialog(null, "Es ist ein Schaltjahr");
        } else if (d % 4 == 0) {
            JOptionPane.showMessageDialog(null, "Es ist ein Schaltjahr");
        } else {
            JOptionPane.showMessageDialog(null, "Es ist kein Schaltjahr");
        }
    }
}
Alternativ kannst du auch auf die JDK-Methode zurückgreifen:

Code:
/* Schaltjahr: Das Programm überprüft ob das eingegebene Jahr
* ein Schaltjahr ist.
*/

import javax.swing.*;
import java.util.GregorianCalendar;

public class Schaltjahr {
    public static void main(String[] args) {
        int d;
        String eingabe;
        eingabe = JOptionPane.showInputDialog("Gib das Jahr ein ");
        d = Integer.parseInt(eingabe);
        GregorianCalendar cal = (GregorianCalendar) GregorianCalendar.getInstance();
        if(cal.isLeapYear(d)) {
            JOptionPane.showMessageDialog(null, "Es ist ein Schaltjahr!");
        } else {
            JOptionPane.showMessageDialog(null, "Es ist kein Schaltjahr!");
        }
    }
}
minearth is offline  
Thanks
1 User
Old 06/01/2016, 04:15   #3
Moderator


 
elite*gold: 558
Join Date: Feb 2010
Posts: 6,545
Received Thanks: 1,424
Quote:
Originally Posted by minearth View Post
Code:
        if ((d % 4 == 0) && (d % 100 == 0) && (d % 400 == 0)) {
            JOptionPane.showMessageDialog(null, "Es ist ein Schaltjahr");
        } else if (d % 4 == 0) {
            JOptionPane.showMessageDialog(null, "Es ist ein Schaltjahr");
        } else {
            JOptionPane.showMessageDialog(null, "Es ist kein Schaltjahr");
        }
Da hast du aber etwas falsch gemacht, bei dir sind auch die 100 Jahre ein Schaltjahr. Außerdem ist das Jahr defintiv auch durch 4 und 100 teilbar, wenn die 400 geht, das muss man dann nicht mehr extra prüfen. Ich korrigere das mal und mache es etwas kleiner.

Code:
/* Schaltjahr: Das Programm überprüft ob das eingegebene Jahr
* ein Schaltjahr ist.
*/

import javax.swing.*;

public class Schaltjahr {
    public static void main(String[] args) {
        String eingabe = JOptionPane.showInputDialog("Gib das Jahr ein ");
        double d = Double.parseDouble(eingabe);
        if (d % 400 == 0 || (d % 4 == 0 && d % 100 != 0)) {
            JOptionPane.showMessageDialog(null, "Es ist ein Schaltjahr");
        } else {
            JOptionPane.showMessageDialog(null, "Es ist kein Schaltjahr");
        }
    }
}
ComputerBaer is offline  
Thanks
1 User
Old 06/01/2016, 08:54   #4
 
NotThatBad's Avatar
 
elite*gold: 0
Join Date: Mar 2013
Posts: 802
Received Thanks: 347
mal ganz unabhängig von deiner frage, wieso fängst du denn gleich mit gui's an? wär's denn nicht sinnvoller, ganz normale konsolenprogramme zu schreiben, um java richtig zu lernen?
NotThatBad is offline  
Thanks
1 User
Old 06/01/2016, 16:48   #5


 
elite*gold: 575
Join Date: Feb 2013
Posts: 776
Received Thanks: 70
Quote:
Originally Posted by ComputerBaer View Post
Da hast du aber etwas falsch gemacht, bei dir sind auch die 100 Jahre ein Schaltjahr. Außerdem ist das Jahr defintiv auch durch 4 und 100 teilbar, wenn die 400 geht, das muss man dann nicht mehr extra prüfen.
Oh, stimmt, hab' nur in aller schnelle den Code umstrukturiert, ohne auf die Logik zu achten, sry
minearth is offline  
Thanks
1 User
Old 06/01/2016, 18:11   #6
 
elite*gold: 0
Join Date: May 2015
Posts: 700
Received Thanks: 445
Quote:
Originally Posted by NotThatBad View Post
mal ganz unabhängig von deiner frage, wieso fängst du denn gleich mit gui's an? wär's denn nicht sinnvoller, ganz normale konsolenprogramme zu schreiben, um java richtig zu lernen?
Konsoleneingaben sind komplizierter als das, was er verwendet.
algernong is offline  
Old 06/04/2016, 00:58   #7
 
Achat's Avatar
 
elite*gold: 528
Join Date: Jan 2012
Posts: 2,127
Received Thanks: 2,403
Quote:
Originally Posted by FlareEniX View Post
Hallo,

ich bin gerade dabei Java zu lernen und komme bei dieser Übungsaufgabe nicht weiter. Das Programm soll überprüfen ob sich bei der Eingabe um ein Schaltjahr handelt.
Wenn du bei so einer Übungsaufgabe nicht eigenständig weiter kommst, dafür einen Thread eröffnen musst, solltest du es lieber gleich lassen. 1 Minute Google hätte die Antwort gebracht.

Mit GUIs anzufangen ist keine gute Idee.

Warum kann man es nicht richtig machen?
Code:
public static void main(String[] args) {
	for(int year = 1900; year < 2020; year++)
		System.out.println(year + " isLeapYear: " + isLeapYear(year));

}

public static boolean isLeapYear(int year) {
	Calendar calendar = Calendar.getInstance();
	calendar.set(Calendar.YEAR, year);
	return calendar.getActualMaximum(Calendar.DAY_OF_YEAR) > 365 ? true : false;
}
Quote:
Originally Posted by FlareEniX View Post
Für die Überprüfung gilt folgendes:
Ist die Jahreszahl durch 4 teilbar, dann ist es ein Schaltjahr, außer die Jahreszahl ist gleichzeitig auch durch 100teilbar, dann ist das Jahr kein Schaltjahr - es sei denn, die Jahreszahl ist gleichzeitig auch durch 400 teilbar, dann ist es doch wieder ein Schaltjahr
Wenn das wirklich so in der Übung vorgegeben ist, es mit Modulo zu machen, für diesen Anwendungsfall, ab in die Tonne mit den Übungen.
In Java gibt es für so ziemlich alles Standardbibliotheken. Mit denen man sich vertraut machen sollte.
Achat is offline  
Old 06/04/2016, 01:51   #8
 
FlareEniX's Avatar
 
elite*gold: 1
Join Date: Feb 2009
Posts: 423
Received Thanks: 54
Quote:
Originally Posted by Achat View Post
Wenn du bei so einer Übungsaufgabe nicht eigenständig weiter kommst, dafür einen Thread eröffnen musst, solltest du es lieber gleich lassen. 1 Minute Google hätte die Antwort gebracht.

Mit GUIs anzufangen ist keine gute Idee.

Warum kann man es nicht richtig machen?
Code:
public static void main(String[] args) {
	for(int year = 1900; year < 2020; year++)
		System.out.println(year + " isLeapYear: " + isLeapYear(year));

}

public static boolean isLeapYear(int year) {
	Calendar calendar = Calendar.getInstance();
	calendar.set(Calendar.YEAR, year);
	return calendar.getActualMaximum(Calendar.DAY_OF_YEAR) > 365 ? true : false;
}


Wenn das wirklich so in der Übung vorgegeben ist, es mit Modulo zu machen, für diesen Anwendungsfall, ab in die Tonne mit den Übungen.
In Java gibt es für so ziemlich alles Standardbibliotheken. Mit denen man sich vertraut machen sollte.
Woher nimmst du dir das recht zu meinen ich soll es dann lassen? Ich habe mich über eine Stunde selber damit beschäftigt und natürlich auch gegoogelt. Aber es ging ja nicht darum einfach eine Anwendung zu schreiben mit der ein Schaltjahr überprüft wird, sondern um die korrekte Verwendung der IF Funktion und ich wollte wissen wieso es bei mir nicht geht, bzw. wo mein Fehler liegt um durch einen "Aha Effekt" zu lernen. Ich brauch sicherlich kein Programm mit dem ich das Schaltjahr berechne.
Wo wir gleich bei Punkt 2 währen. Mag gut sein, dass es in Java Bibliotheken für so was gibt. Aber ist dir vielleicht in den Sinn gekommen, dass gerade das lösen dieser Aufgabe eine gute Übung für eine if Funktion ist? Wenn du dich mit Menschen beschäftigen möchtest die es richtig machen, dann öffne doch in Zukunft keinen Thread bei dem schon Anfänger im Titel steht.

An die ganzen anderen: nochmal herzlichen Dank
FlareEniX is offline  
Thanks
1 User
Old 06/04/2016, 02:45   #9
 
Achat's Avatar
 
elite*gold: 528
Join Date: Jan 2012
Posts: 2,127
Received Thanks: 2,403
Quote:
Originally Posted by FlareEniX View Post
Woher nimmst du dir das recht zu meinen ich soll es dann lassen?
Aus eigener Erfahrung. Ich hätte damals keinen Thread aufgemacht.
Und daraus:

Quote:
Originally Posted by FlareEniX View Post
Ich habe mich über eine Stunde selber damit beschäftigt und natürlich auch gegoogelt.
.
Bitweiser Operator ist etwas anderes als logischer Vergleich. Eine Stunde war offensichtlich nicht genug.

Quote:
Originally Posted by FlareEniX View Post
um durch einen "Aha Effekt" zu lernen.
Bei zehn Stunden Lösung suchen und Tutorials/Handbücher/Doku lesen, im Vergleich zu einer Stunde, dann die Leute hier mal machen lassen, wo ist der Lerneffekt wohl größer?
Programmieren lernst du nicht über Nacht, nimm dir Zeit.

Quote:
Originally Posted by FlareEniX View Post
Wenn du dich mit Menschen beschäftigen möchtest die es richtig machen, dann öffne doch in Zukunft keinen Thread bei dem schon Anfänger im Titel steht.
Wenn ich dir hier gut zurede, Lösung präsentiere, ist dir nur für den Moment geholfen.
Es bringt dich aber nicht weiter.
Programmieren lernen ist learning-by-doing, lernen durch ausprobieren.
Du brauchst mehr Durchhaltevermögen. Den Willen, das Problem alleine zu lösen.
Egal ob es jetzt 100 Stunden sind. Grundlagen muss man aufbauen. Um auf diesen nachher wiederum aufbauen zu können.
In einer Stunde lerne ich auch nicht Autofahren.


P.S.: Für kleineres gibt es den
Achat is offline  
Old 06/04/2016, 11:28   #10
 
KingDingD0ng's Avatar
 
elite*gold: 11
The Black Market: 103/0/0
Join Date: Jun 2011
Posts: 1,847
Received Thanks: 141
Quote:
Originally Posted by Achat View Post
Aus eigener Erfahrung. Ich hätte damals keinen Thread aufgemacht.
Und daraus:


.
Bitweiser Operator ist etwas anderes als logischer Vergleich. Eine Stunde war offensichtlich nicht genug.


Bei zehn Stunden Lösung suchen und Tutorials/Handbücher/Doku lesen, im Vergleich zu einer Stunde, dann die Leute hier mal machen lassen, wo ist der Lerneffekt wohl größer?
Programmieren lernst du nicht über Nacht, nimm dir Zeit.


Wenn ich dir hier gut zurede, Lösung präsentiere, ist dir nur für den Moment geholfen.
Es bringt dich aber nicht weiter.
Programmieren lernen ist learning-by-doing, lernen durch ausprobieren.
Du brauchst mehr Durchhaltevermögen. Den Willen, das Problem alleine zu lösen.
Egal ob es jetzt 100 Stunden sind. Grundlagen muss man aufbauen. Um auf diesen nachher wiederum aufbauen zu können.
In einer Stunde lerne ich auch nicht Autofahren.


P.S.: Für kleineres gibt es den

Du (TE) solltest dir das nicht als hate Comment o.ä. einbilden, eher als nett gemeinte Hilfe.
Er hat recht, learning by doing is dabei das aller beste. Selbst wenn du mehrere Stunden oder sogar Tage davor sitzt.
Stell dir mal vor ein Fullstack Developer hat ein Problem und weiß nichtmehr weiter. Was macht er? Googlen, debuggen, testen, lernen.

Wenn du wirklich "gut" werden willst oder in der Branche mithalten willst darfst du NIEMALS(!) aufhören zu lernen.

#nohate

Greetz
KingDingD0ng is offline  
Reply


Similar Threads Similar Threads
funktion hilfe
02/25/2013 - Metin2 Private Server - 2 Replies
function minmax(...) local vmin,vmax for i,v in ipairs{...} do if vmax==nil or v > vmax then vmax=v end if vmin==nil or v < vmin then vmin=v end end
Hilfe bei Quest Funktion
10/25/2012 - Metin2 Private Server - 2 Replies
Hey, ich weis das es ein Quest-Sammelthread gibt, aber ich denke es passiert hier besser rein... und zwar, benötige ich folgende Questfunktion: ein NPC, der 20 Items haben will aber je 100STK. aber nur je 100stk pro abzieht und man bekommt dafür 1. Also ich möchte das so anwenden:
Quest funktion hilfe
09/27/2012 - Metin2 Private Server - 9 Replies
Hallo, könnte jemand mir mal helfen wie ich es schaffe per quest zu prüfen ob man gestorben ist? z.b. when kill with pc.is_pc() begin warp_to_village() end ich will machen, dass wenn man stirbt wird man nach map1 teleportiert.
Hilfe bei Send Funktion mit Stop Funktion
04/02/2011 - AutoIt - 11 Replies
Hallo Elitepvpers ich habe ein Problem und Mein Problem ist das mein Text einfach weiter schreibt wenn ich mit HotKey verwende... gib es keine Funktion das der Text einmal kommt und nicht wenn man einmal die HotKey das er 10 min das selbe schreibt :confused:
Hilfe bei ner Funktion
11/04/2006 - General Coding - 10 Replies
Hallo, ich musste für jemanden ne funktion schreiben, die prüft ob ne zahl unter 100 liegt soweit so gut hab ich folgenden code geschrieben: if zahl == 0 then zahlunter100; if zahl == 1 then zahlunter100; if zahl == 2 then zahlunter100; if zahl == 3 then zahlunter100; if zahl == 4 then zahlunter100;



All times are GMT +1. The time now is 06:46.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.