Java Programmieren

Hallo, es geht um folgende Aufgabe:
Schreiben Sie eine Applikation, bei der ein Monat als Zahl eingelesen wird
(Januar = 1, Februar = 2, …, Dezember = 12). Ermitteln Sie mit Hilfe von switch - case, zu welchem Quartal der Monat gehört. Benutzen Sie hierbei höchstens vier case-Anweisungen. Geben Sie das Quartal, zu dem der Monat gehört, aus.

Leider habe ich überhaupt keine Vorstellung davon, wie ich dabei vorgehen könnte.
Ich weiß, dass ich zunächst die einzelnen Monate den Zahlen zuweisen muss durch: int januar = 1;
int februar = 2; usw.
Dann muss ich ja auch ein Dialogfeld erstellen, dass den Benutzer dazu aufruft, den Monat einzugeben.
Das kann ich mithilfe von JOptionPane machen.
Doch unter was speicher ich diese Eingabe.
Und wie weise ich den einzelnen Monaten (Zahlen) die 4 Quartale zu?
Ich hoffe ihr könnt mir dabei helfen.

Hallo,

die Aufgabe hört sich sehr theoretisch an. Daher gehe ich davon aus, dass du irgendwo programmieren lernst, also wahrscheinlich in der Ausbildung. Da wirst du sicherlich nicht einfach die Aufgabe erhalten haben sondern es gab sicherlich vorher entsprechenden Unterricht. Hast du den geschwänzt?

Da wir sicherlich nicht deine Hausaufgaben für dich erledigen, weise ich dich auf entsprechende Literatur hin, die es auch kostenfrei im Netz gibt:

http://openbook.galileocomputing.de/javainsel8/javai…
http://openbook.galileocomputing.de/javainsel8/javai…

Es empfiehlt sich übrigens das obige Buch in gedruckter Form zu erwerben. So, wie ich dich auf Grund deiner Frage einschätze, kannst du es gut brauchen – das ist nicht abwertend gemeint, das Buch ist wirklich nützlich!

hth
McPringle

die Switch-Case Sache:

switch(monat/4)
{
 case 1:
 hier dein Code für 1. Quartal
 break;
 case 2:
 hier dein Code für 2. Quartal
 break;
 case 3:
 hier dein Code für 3. Quartal
 break;
 case 4:
 hier dein Code für 4. Quartal
 break;
 default:
 hier dein FallBack-Code wenn etwas nicht stimmt
}

Der Input der JOptionPane ist vom Typ String und mit

Integer.parseInt(StringWert)

kannst du in

int

wandeln

Nein, ich habe nicht geschwänzt.
Ich war bei jeder Vorlesung da, doch hatten wir einen so schlechten Professor, der einem den Stoff nicht verständlich beigebracht hat.
und jetzt versuch ich mit Hilfe einiger Übungsaufgaben, mich auf die Klausur vorzubereiten.
Danke für den Link, dieses Buch habe ich bereits, doch hilft mir die Theorie grade bei der Aufgabe nicht wirklich weiter.

Ich hab mir das so vorgestellt, aber irgendwie klappt das nicht so ganz.

import javax.swing.JOptionPane;

package javaapplication4;

public class Main {

public static void main(String[] args) {

int januar = 1, februar = 2, märz = 3, april = 4, mai = 5;
int juni = 6, juli = 7, august = 8, september = 9, oktober = 10;
int november = 11, dezember = 12;
String eingabe;
int monat;

eingabe = JOptionPane.showInputDialog(„Geben Sie den Monat ein“);
monat = Integer.parseInt(eingabe);

switch (monat)
{
case ‚1-3‘:
System.out.println(„Der Monat gehört zum 1. Quartal“);
break;
case ‚4-6‘:
System.out.println(„Der Monat gehört zum 2. Quartal“);
break;

}

}

}

Ich bin jetzt etwas weitergekommen, leider bekomme ich bei den letzten 3 case-Anweisungen noch Fehlermeldungen:

import javax.swing.JOptionPane;
public class Main {

public static void main(String[] args) {

int januar = 1, februar = 2, märz = 3, april = 4, mai = 5;
int juni = 6, juli = 7, august = 8, september = 9, oktober = 10;
int november = 11, dezember = 12;
String eingabe;
int monat;

eingabe = JOptionPane.showInputDialog(„Geben Sie den Monat ein“);
monat = Integer.parseInt(eingabe);

switch (monat)
{
case ‚1‘:
case ‚2‘:
case ‚3‘:
System.out.println(„Der Monat gehört zum 1. Quartal“);
break;
case ‚4‘:
case ‚5‘:
case ‚6‘:
System.out.println(„Der Monat gehört zum 2. Quartal“);
break;
case ‚7‘:
case ‚8‘:
case ‚9‘:
System.out.println(„Der Monat gehört zum 3. Quartal“);
break;
case ‚10‘:
case ‚11‘:
case ‚12‘:
System.out.println(„Der Monat gehört zum 4. Quartal“);
break;
}

}

}

Hallo

Zeichen, die in einzelnen Hochkommata stehen (z.B. ‚a‘) werden als char interpretiert. Das darf dann immer nur ein Zeichen sein. ‚ab‘ gibt eine Fehlermeldung. Zeichen, die in doppelten Hochkommata stehen (z.B. „a“) werden als String interpretiert. Das dürfen mehrere Zeichen sein. „ab“ gibt keine Fehlermeldung. Das aber nur am Rande denn die Variable monat ist sowieso vom Typ int.

Grüße

Michael

danke, aber die monate müssen ja vom Datentyp int sein, weil sie ja den Zahlen 1-12 zugewiesen werden müssen.
Wie kann man das denn anders realisieren?

Ja aber du kannst nach switch nicht eine int Variable schreiben und bei case dann char. Das passt vom Typ her nicht zusammen. Also entweder nach switch int und nach case int oder nach switch char und nach case char.
Kleiner Tipp noch: ‚1‘ wird als char interpretiert und 1 wird als int interpretiert.

Grüße

Michael

Soweit hab ich das jetzt hinbekommen.
bekomm aber unten im fenster folgende Fehlermeldung:
Exception in thread „main“ java.lang.NumberFormatException: For input string: „januar“
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
at java.lang.Integer.parseInt(Integer.java:449)
at java.lang.Integer.parseInt(Integer.java:499)
at de.ipartner.java.ifverzeigungen.Main.main(Main.java:29)
Java Result: 1

Das Programm sieht jetzt so aus:

package de.ipartner.java.ifverzeigungen;
import javax.swing.JOptionPane;
import java.io.*;

public class Main {

public static void main(String[] args) throws IOException{

int januar = 1, februar = 2, märz = 3, april = 4, mai = 5;
int juni = 6, juli = 7, august = 8, september = 9,
oktober = 10; int november = 11, dezember = 12;
String eingabe;
int monat;

eingabe = JOptionPane.showInputDialog(„Geben Sie den Monat ein“);
monat = Integer.parseInt(eingabe);

switch (monat)
{
case 1:
case 2:
case 3:
System.out.println(„Der Monat gehört zum 1. Quartal“);
break;
case 4:
case 5:
case 6:
System.out.println(„Der Monat gehört zum 2. Quartal“);
break;
case 7:
case 8:
case 9:
System.out.println(„Der Monat gehört zum 3. Quartal“);
break;
case 10:
case 11:
case 12:
System.out.println(„Der Monat gehört zum 4. Quartal“);
break;
default:
System.err.println( "Unbekannter Monat " + monat );

}

}

}

Die Exception kommt wenn der String den du in dein JOptionPane eingibst keine Zahl ist. Wenn du z.B. „Januar“ eingibst kann das ja nicht in ein Integer geparst werden.

Grüße

Michael

Das Problem ist, ich bekomm aus der Aufgabenstellung nicht heraus ob man die Zahl oder den Monat eingeben soll.
Und wenn doch nur die Zahl, wie macht man das dann mit der Exception?

Wenn du nur eine Zahl eingibst dürfte keine Exception kommen.

Aber ich wüsste trotzdem gerne wie man bei JOptionPane eine exception einbaut

Ich weiß jetzt nicht ganz was du meinst. Ich denk mal du willst irgendwas ausgeben wenn keine Zahl eingegeben wird. Einfach mit try und catch.
Wie das geht steht hier:
http://openbook.galileocomputing.de/javainsel8/javai…

Ja und ich hab jetzt 12 case Anweisungen. In der Aufgabenstellung steht, ich darf nur 4 benutzen. Wie soll das gehen?

Mein Programm sieht jetzt so aus. Jedoch weiß ich nicht, ob ich damit die Aufgabenstellung erfüllt habe, weil ich den Monaten keine Zahl zugewiesen habe, da es auch ohne das funktioniert.

package de.ipartner.java.ifverzeigungen;
import javax.swing.JOptionPane;
import java.io.*;

public class Main {

public static void main(String[] args) throws IOException{

String eingabe;
int monat;

eingabe = JOptionPane.showInputDialog(„Geben Sie den Monat ein“);
monat = Integer.parseInt(eingabe);
if (monat3 && monat6 && monat9 && monat

Na dann benutzt du halt nur 4 mal case und machst den Rest mit if und else if und else im default Block. Ich versteh zwar den Sinn dahinter nicht ganz aber es wird funktionieren. Du kannst das Ganze übrigens auch ohne eine einzige switch/case- oder if/else Anweisung machen. Überleg dir doch mal wie das gehen könnte. Ist ganz einfach und nur eine Zeile Code.

Grüße

Michael

In der Aufgabenstellung steht ja auch gar nichts davon, dass du Monaten Zahlen zuweisen sollst.

bestimmt mit einer while- oder for-Schleife oder?