|
You last visited: Today at 06:46
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.
05/30/2016, 16:47
|
#1
|
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
|
|
|
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!");
}
}
}
|
|
|
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
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");
}
}
}
|
|
|
06/01/2016, 08:54
|
#4
|
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?
|
|
|
06/01/2016, 16:48
|
#5
|
elite*gold: 575
Join Date: Feb 2013
Posts: 776
Received Thanks: 70
|
Quote:
Originally Posted by ComputerBaer
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
|
|
|
06/01/2016, 18:11
|
#6
|
elite*gold: 0
Join Date: May 2015
Posts: 700
Received Thanks: 445
|
Quote:
Originally Posted by NotThatBad
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.
|
|
|
06/04/2016, 00:58
|
#7
|
elite*gold: 528
Join Date: Jan 2012
Posts: 2,127
Received Thanks: 2,403
|
Quote:
Originally Posted by FlareEniX
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
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.
|
|
|
06/04/2016, 01:51
|
#8
|
elite*gold: 1
Join Date: Feb 2009
Posts: 423
Received Thanks: 54
|
Quote:
Originally Posted by Achat
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 i ch 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
|
|
|
06/04/2016, 02:45
|
#9
|
elite*gold: 528
Join Date: Jan 2012
Posts: 2,127
Received Thanks: 2,403
|
Quote:
Originally Posted by FlareEniX
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
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
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
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
|
|
|
06/04/2016, 11:28
|
#10
|
elite*gold: 11
Join Date: Jun 2011
Posts: 1,847
Received Thanks: 141
|
Quote:
Originally Posted by Achat
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
|
|
|
 |
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.
|
|