Variablen If Anweisung, kleiner fehler

quest1on

Mitglied
Guten Tag liebe Boarder,

Ich habe folgendes Anliegen:
Ich versuche 2 schleifen zu machen, oben im Klassenkopf habe ich einen boolean deklariert namens "form".

Java:
private String getKopfzeileMonatsblatt(int jahr, int monat) {
        String Kopfzeile = "*******************"+kalfunk.monatsname[monat]+ " " +jahr+"******************* \r";
        if(form) {
        int y = 1;
        System.out.print(Kopfzeile);
        for(int x = 0; x < 7; x++){
            System.out.print(kalfunk.wochentagkurz[x]+ "  ");
        }
        } else { 
            System.out.print(Kopfzeile);
            for(int y = 1; y < 7; y++);{
            System.out.print(kalfunk.wochentagkurz[y]+ "  ");
            System.out.print(kalfunk.wochentagkurz[0]+ "  ");
                }
        }
        return Kopfzeile;
        }

warum gibt er mir einen compiler fehler an?

undzwar genau hier:
System.out.print(kalfunk.wochentagkurz[y]+ " ");

Wenn man nämlich in dem true teil der if anweisung reinschaut, sieht man das er bei der variablen x nämlich nicht meckert, aber bei der variablen y schon.

Ich bitte um Hilfe :/

Mit Freundlichen Grüßen
 

JCODA

Top Contributor
Du hast ein Semikolon hinter der forschleife. Dann beendet sich der "Block" und das y ist im darauffolgenden nichtmehr vorhanden.

Mach das Semikolon hinter der Forschleife weg.
 
X

Xyz1

Gast
Ich hab es gemockt, hier noch-mal in Schön:
Java:
    private boolean form = true;

    private String getKopfzeileMonatsblatt(int jahr, int monat) {
        String Kopfzeile = "*******************" + kalfunk.monatsname[monat] + " " + jahr + "******************* \r";
        if (form) {
            int y = 1;
            System.out.print(Kopfzeile);
            for (int x = 0; x < 7; x++) {
                System.out.print(kalfunk.wochentagkurz[x] + "  ");
            }
        } else {
            System.out.print(Kopfzeile);
            for (int y = 1; y < 7; y++) {
                System.out.print(kalfunk.wochentagkurz[y] + "  ");
                System.out.print(kalfunk.wochentagkurz[0] + "  ");
            }
        }
        return Kopfzeile;
    }

    static class kalfunk {
        static String[] monatsname = new String[12];
        static int[] wochentagkurz = new int[7];
    }
 

quest1on

Mitglied
Hallo nochmal,

vielen Dank für die Antwort, aber könntest du erklären was du gemacht hast, bevor ich das übernehme?
Würde es gut finden, wenn ich was daraus lernen kann.

Außerdem eine ergänzende Frage:

hier ist mein gesamter Programmcode für einen Kalender.
Könnte jemand erfahrenes den mal abspielen lassen?
Es beinhaltet keinen einzigen Compiler Fehler atm. Nur bei intellij könnte das /r ein Problem darstellen(soweit ich informiert bin).
Java:
package kalender;
import java.text.DecimalFormat;
import java.util.Scanner;

public class Kalender {
      
    Scanner scan = new Scanner(System.in);
    KalenderFunktionen kalfunk = new KalenderFunktionen();
    boolean form = true;
  
    /**
    * Beschreibung: Erzeugt ein Monatsblatt des Jahreskalenders
    * und gibt das Monatsblatt in Stringform zurück.
    * Das Monatsblatt wird in einem String mit Zeilenumbrüchen abgelegt.
    * Das Monatsblatt enthält immer die Kopfzeile für den entsprechenden Monat.
    * Beispiel:
    *
    ******************* Mai 2016 *******************
    So  Mo  Di  Mi  Do  Fr  Sa
    01    02    03    04    05    06    07
    08    09    10    11    12    13    14  
    15    16    17    18    19    20    21  
    22    23    24    25    26    27    28  
    29    30    31
    *
    *@param jahr - das Jahr zum Monat
    *@param monat - der Monat, der angezeigt werden soll
    *@return String - der zusammengebastelte String
    */
//    private String getMonatsblatt(int jahr, int monat){
//          
//        String pattern="###,#00";
//        DecimalFormat asdf = new DecimalFormat(pattern);
//      
//        if(kalfunk.istSchaltjahr(jahr)) {
//        for(int y=0;y < kalfunk.monatslaenge[1][monat];) {
//            if(y % 7 == 0) {
//                System.out.println();
//            }
//            System.out.print(asdf.format(y=y+1)+" " );
//            System.out.print(" ");
//        }
//        return " ";
//        } else {
//            for(int y=0;y < kalfunk.monatslaenge[0][monat];) {
//                if(y % 7 == 0) {
//                    System.out.println();
//                }
//                System.out.print(asdf.format(y=y+1) );
//                System.out.print(" ");
//            }
//            return " ";
//        }      
//    private String getMonatsblatt(int jahr, int monat){
//        
//        String pattern="###,#00";
//        DecimalFormat asdf = new DecimalFormat(pattern);
//       for(int t=0; t<kalfunk.wochentag_im_jahr(jahr, kalfunk.tagesnummer(1, monat, jahr));t++){
//System.out.print(" ");
//}
//        if(kalfunk.istSchaltjahr(jahr)) {
//        for(int y=0;y < kalfunk.monatslaenge[1][monat];) {
//            if(y % 7 == 0) {
//                System.out.println();
//            }
//            System.out.print(asdf.format(y=y+1)+" " );
//            System.out.print(" ");
//        }
//        return " ";
//        } else {
//            for(int y=0;y < kalfunk.monatslaenge[0][monat];) {
//                if(y % 7 == 0) {
//                    System.out.println();
//                }
//                System.out.print(asdf.format(y=y+1) );
//                System.out.print(" ");
//            }
//            return " ";
//        }
//        }
  
  
  
  
    private String getMonatsblatt(int jahr, int monat) {

        if(form) {
        int day = 0;
        int firstDay = kalfunk.wochentag_im_jahr(jahr, kalfunk.tagesnummer(1, monat, jahr));
        String pattern = "###,#00";
        DecimalFormat asdf = new DecimalFormat(pattern);
        if (kalfunk.istSchaltjahr(jahr)) {
            for (int y = 0; y < kalfunk.monatslaenge[1][monat] + firstDay ; y++) {
                if (y % 7 == 0) {
                    System.out.println();
                }
                if (y == 0) {
                    for (int t = 0; t < firstDay; t++) {
                        System.out.print(" ");
                        System.out.print(" ");
                        System.out.print(" ");
                        System.out.print(" ");

                        y++;
                    }

                }
                System.out.print(asdf.format(day = day + 1) + " ");
                System.out.print(" ");
            }
            return " ";
        } else {
            for (int y = 0; y < kalfunk.monatslaenge[0][monat] + firstDay;) {
                if (y % 7 == 0) {
                    System.out.println();
                }
                if (y == 0) {
                    for (int t = 0; t < firstDay; t++) {
                        System.out.print(" ");
                        System.out.print(" ");
                        System.out.print(" ");
                        System.out.print(" ");

                        y++;
                    }

                }
                System.out.print(asdf.format(day = day + 1) + " ");
                System.out.print(" ");
            }   
        }
    } return " ";
}
    /**
    * Methode, um die Kopfzeile eines Monatsblattes in Stringform zurückzugeben.
    * Dieses erfordert die Übergabe des Monats und des Jahres als Integer
    * und liefert die Kopfzeile komplett als String zurück.
    * @param jahr - das Jahr zum Monat
    * @param monat - der Monat, der angezeigt werden soll
    * @return liefert die Kopfzeile komplett als String zurück
    *      Beispiel:
    ******************* Mai 2016 *******************
    So    Mo    Di    Mi    Do    Fr    Sa
    *
    */
    private String getKopfzeileMonatsblatt(int jahr, int monat) {
        String Kopfzeile = "*******************"+kalfunk.monatsname[monat]+ " " +jahr+"******************* \r";
        if(form) {
        System.out.print(Kopfzeile);
        for(int x = 0; x < 7; x++){
            System.out.print(kalfunk.wochentagkurz[x]+ "  ");
        }
        } else {
            System.out.print(Kopfzeile);
            for(int y = 1; y < 7; y++){
            System.out.print(kalfunk.wochentagkurz[y]+ "  ");
            System.out.print(kalfunk.wochentagkurz[0]+ "  ");
                }
        }
        return Kopfzeile;
        }
    /**
    * Methode zur Ausgabe eines Monatsblattes auf der Konsole
    *
    * @param jahr - das Jahr zum Monat
    * @param monat - der Monat, der angezeigt werden soll
    */
    public void zeigeMonat(int jahr, int monat) {
  
//        String Kopfzeile = "*******************"+kalfunk.monatsname[monat]+ " " +jahr+"******************* \r";
//    System.out.println(Kopfzeile);
//
//    String pattern="###,#00";
//    DecimalFormat form = new DecimalFormat(pattern);
//    for(int y=0;y < kalfunk.monatslaenge[1][monat];) {
//        if(y % 7 == 0) {
//            System.out.println();
//        }
//        System.out.print(form.format(y=y+1) );
//        System.out.print(" ");
//      
//      
//        if(kalfunk.istSchaltjahr(jahr)) {      
//    }}
      
//        System.out.println(getKopfzeileMonatsblatt(jahr,monat));
        System.out.println(getMonatsblatt(jahr,monat));
        }
    /**
    * Methode zur Ausgabe aller Monatblätter eines Jahres auf der Konsole
    * @param jahr - das Jahr, das angezeigt werden soll.
    */
    public void zeigeJahr(int jahr){
        for(int h = 1;h < 13;h++) {
        getKopfzeileMonatsblatt(jahr,h);
        zeigeMonat(jahr,h);
        System.out.println();
        }
    }  
    /**
    * Die Methode liest eine Monatszahl ein,
    * evaluiert diese Zahl auf den gültigen Bereich[1,..,12]
    * und gibt die eingelesene und überprüfte Monatszahl zurück.
    * Wenn der Benutzer keine gültige Monatszahl eingibt, verbleibt
    * das Programm in der Einlese-Schleife.
    * @return in - der eingelesene Monat
    */
    private int liesMonat(){
        System.out.print("Bitte geben Sie den Monat ein:");
        int monat = scan.nextInt();
    do{
        System.out.println("Bitte geben Sie einen Wert zwischen 1 und 12 ein.");
        monat = scan.nextInt();
    }while(monat > 12 || monat < 1);  
            return monat;  
        }
  
  
    /**
    * Die Methode liest eine Jahreszahl ein,
    * evaluiert diese Zahl auf die gültigen Ziffern
    * und gibt die eingelesene und überprüfte Jahreszahl zurück.
    * Wenn der Benutzer keine gültige Jahresangabe macht, verbleibt
    * das Programm in der Einlese Schleife.
    * @return int - das eingelesene Jahr
    */
    private int liesJahr(){
        System.out.print("Bitte geben Sie das Jahr ein:");
        int jahr = scan.nextInt();
        do{
            System.out.print("Bitte ein Jahr zwischen 2000 und 2020 eingeben");
            jahr = scan.nextInt();
        } while(jahr > 2020 || jahr < 2000);
            return jahr;
        }
    /**
    * stellt das Auswahlmenü dar und liest die Benutzerauswahl ein.
    * die Benutzerauswahl wird evaluiert auf Gültigkeit.
    * Wenn der Benutzer keine gültige Eingabe macht, verbleibt
    * das Programm in der Einlese-Schleife
    */
    public void auswahlMenue() {
      
//        int jahr = liesJahr();
//        int monat = liesMonat();
//        getKopfzeileMonatsblatt(jahr, monat);
//        getMonatsblatt(jahr,monat);
//      
//      
        int jahr = 0;
        int monat = 0;
        int e = 0;
        boolean operation = true;
        do{
            System.out.println("1: Amerikanisches Format oder 2: Deutsches Format?");
            e = scan.nextInt();
            switch(e) {
            case 1: form = true;
            case 2: form = false;
            default: System.out.println("Bitte geben Sie \"1\" oder \"2\" ein!");
                    e = scan.nextInt();
            }
            if(form) {
            System.out.println("Bitte wählen Sie aus!");
            System.out.println("Auswahl 1: alle Monatsblätter eines Jahres"
                    + "\t Auswahl 2: bestimmter Monat"
                    + "\t Auswahl 9: Ich bin fertig :)");
            int f = scan.nextInt();
        switch(f) {
        case 1:
            zeigeJahr(liesJahr());
            break;
        case 2:
            jahr = liesJahr();
            monat = liesMonat();
            System.out.println();
            getKopfzeileMonatsblatt(jahr, monat);
            zeigeMonat(jahr, monat);
            break;
        case 9:
            System.out.println("Vielen Dank @Kuzuoglu");
            operation = false;
            break;
        default:
            System.out.print("Bitte geben Sie korrekte Werte ein \n Auswahl 1: alle Monatsblätter eines Jahres \t Auswahl 2: bestimmter Monat \t Auswahl 9: Ich bin fertig :)");
            f = scan.nextInt();
        }
            }else {
            int j = scan.nextInt();
            switch(j) {
            case 1:
                zeigeJahr(liesJahr());
                break;
            case 2:
                jahr = liesJahr();
                monat = liesMonat();
                System.out.println();
                getKopfzeileMonatsblatt(jahr, monat);
                zeigeMonat(jahr, monat);
                break;
            case 9:
                System.out.println("Vielen Dank @Kuzuoglu");
                operation = false;
                break;
            default:
                System.out.print("Bitte geben Sie korrekte Werte ein \n Auswahl 1: alle Monatsblätter eines Jahres \t Auswahl 2: bestimmter Monat \t Auswahl 9: Ich bin fertig :)");
                j = scan.nextInt();
            }
        }
    }    while(operation == true);  
}
}
Ich komme nicht ganz hinter bei einigen Sachen.

Warum gibt es das sogenannte Monatsblatt nicht im eigentlichen Format aus, also die Woche beginnt mit Montag("Mo") und hört mit Sonntag auf("So"). Zeile 9 und 146 bis 161.
Warum muss ich beim Scanner erst 0 eingeben, bevor er die 1 oder 2 überhaupt akzeptiert? Zeile 257. - 262.
Warum funktioniert der Scanner generell inhaltlich nicht, habe ich was falsch programmiert bezüglich des boolischen Wertes "form"?
Ich würde gerne sagen, dass alles was als form = true programmiert ist im amerikanischen Format ausgegeben werden soll und alles als form = false soll deutsches Format sein.
Und warum macht er Probleme bei dem private int liesJahr()
Bevor ich den boolean eingearbeitet hatte, gab es keine Probleme, jetzt werden beim Testen gewisse eigentlich korrekte Werte nicht anerkannt.

Ich bedanke mich schonmal bei euch für eure Antworten und freue mich auf diese.

Mit Freundlichen Grüßen
 
Zuletzt bearbeitet:
X

Xyz1

Gast
Hallo nochmal,

vielen Dank für die Antwort, aber könntest du erklären was du gemacht hast, bevor ich das übernehme?
Würde es gut finden, wenn ich was daraus lernen kann.

Ich hab es einfach formatiert, wollte ich damit sagen. Das kostet mich jetzt vor dem Spiel zu-viele Gehirnwindungen, um das Spiel nicht zu verpassen. ;) Aber andere helfen sicher gern.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T If anweisung Java Basics - Anfänger-Themen 5
C Scanner und If-Anweisung in Kombi Java Basics - Anfänger-Themen 3
Fats Waller Compiler-Fehler Kann ich einen String und die Summe zweier Char Werte mittels der println Anweisung ausgeben Java Basics - Anfänger-Themen 4
AlexVo String zu Java Anweisung getString("*** java code ***") Java Basics - Anfänger-Themen 19
R Wie würde hier die if-Anweisung aussehen? Java Basics - Anfänger-Themen 18
B break Anweisung Java Basics - Anfänger-Themen 13
C Wie kann ich einen User Input mit einer If-Anweisung verbinden? Java Basics - Anfänger-Themen 5
T Not a Statement/Illegal Start of expression bei for Anweisung Java Basics - Anfänger-Themen 6
H Cäsar chiffrierung ohne if-Anweisung Java Basics - Anfänger-Themen 5
D kann man vor dem CSVRecord, replace Anweisung anwenden ? Java Basics - Anfänger-Themen 2
B Erste Schritte if Anweisung mit Wert Übernahme Java Basics - Anfänger-Themen 3
C Anweisung Java Basics - Anfänger-Themen 11
C HashMap - alle keys haben values der letzten put-Anweisung Java Basics - Anfänger-Themen 3
W Warum funktioniert meine if Anweisung nicht? Java Basics - Anfänger-Themen 8
K if Anweisung Java Basics - Anfänger-Themen 3
W Erste Schritte Warum funktioniert mein Programm nicht ? ~if Anweisung~ Java Basics - Anfänger-Themen 4
V Erste Schritte Warum geht meine continue Anweisung nicht? Java Basics - Anfänger-Themen 8
DaCrazyJavaExpert [SQL] SQL als Anweisung mit Spezial-Fall EclipseEclipse Java Basics - Anfänger-Themen 8
J If Anweisung in Schleife einbinden Java Basics - Anfänger-Themen 7
JavaNewbie2.0 Zur Anweisung zurück Java Basics - Anfänger-Themen 13
J Erste Schritte Vorsicht Spaghetti-Code! Wie verschachtel ich meine If-Anweisung??? Java Basics - Anfänger-Themen 4
L if-Anweisung Java Basics - Anfänger-Themen 5
DontFeedTheTroll Erste Schritte Verständnisfrage zu If-Anweisung Java Basics - Anfänger-Themen 7
P Erste Schritte Taschenrechner mit if-else Anweisung Java Basics - Anfänger-Themen 6
M Probleme mit Anzeigen von String in GUI und if-Anweisung Java Basics - Anfänger-Themen 9
L If Anweisung mit ArrayList Probleme Java Basics - Anfänger-Themen 6
OlafHD String in einer If-Anweisung Vergleichen Java Basics - Anfänger-Themen 2
N Rekursion mit if-Anweisung Java Basics - Anfänger-Themen 10
P if anweisung Java Basics - Anfänger-Themen 8
L Frage zur while Anweisung Java Basics - Anfänger-Themen 10
F Return-Anweisung Java Basics - Anfänger-Themen 2
B If-anweisung per ja eingabe. Java Basics - Anfänger-Themen 2
C Variablen if Anweisung falsch gesetzt Java Basics - Anfänger-Themen 4
1 Bei if-Anweisung: Syntax error on token Java Basics - Anfänger-Themen 5
A for-Schleife, if-Anweisung Java Basics - Anfänger-Themen 4
A if - Anweisung Java Basics - Anfänger-Themen 6
R Erste Schritte Schleife erzeugen (mit If Anweisung) Java Basics - Anfänger-Themen 3
P Bei Switch-Anweisung wird default-Anweisung angezeigt Java Basics - Anfänger-Themen 4
M if, else Anweisung Java Basics - Anfänger-Themen 3
O This in switch anweisung Java Basics - Anfänger-Themen 5
M Throws Anweisung innerhalb eines Methodenkopfes unklar Java Basics - Anfänger-Themen 4
F Erste Schritte Switch case vs. Verschachtelte If Anweisung Java Basics - Anfänger-Themen 11
M If-Anweisung (Objekt nachdem es gegessen wurde, mehrmals auftauchen lassen) Java Basics - Anfänger-Themen 3
F Fehler in der Swich-Anweisung aber Warum? Java Basics - Anfänger-Themen 4
A if-Anweisung zwischen zwei Punkten Java Basics - Anfänger-Themen 1
T Problem mit IF-Anweisung. Java Basics - Anfänger-Themen 3
B Erste Schritte Addition von double in switch-Anweisung Java Basics - Anfänger-Themen 2
W return-Anweisung gibt nichts aus Java Basics - Anfänger-Themen 5
H Leere Anweisung Java Basics - Anfänger-Themen 24
S Methoden Return Anweisung beendet Methode nicht, stattdessen wird diese zweimal durchlaufen Java Basics - Anfänger-Themen 3
F Reset in der switch Anweisung Java Basics - Anfänger-Themen 3
V Frage zur IF Anweisung Java Basics - Anfänger-Themen 40
Bluedaishi Klassen Thread über if Anweisung starten und von anderer Klassen über Button Beenden Java Basics - Anfänger-Themen 34
H Worauf bezieht sich die erste else-Anweisung Java Basics - Anfänger-Themen 9
H Verständnisfrage für oder Anweisung Java Basics - Anfänger-Themen 8
D Denkfehler in der If-Anweisung Java Basics - Anfänger-Themen 3
K if anweisung Java Basics - Anfänger-Themen 13
M Erste Schritte Break-Anweisung bei if-else Java Basics - Anfänger-Themen 6
T Erste Schritte switch case Anweisung und if else Verzweigungen? Java Basics - Anfänger-Themen 6
S probleme mit der return anweisung Java Basics - Anfänger-Themen 20
K Methoden while Anweisung Java Basics - Anfänger-Themen 81
D Frage zu der import Anweisung in Java Java Basics - Anfänger-Themen 15
K Wann genau brauche ich die Anweisung gleich null? Java Basics - Anfänger-Themen 10
W "switch" Anweisung - Rechenzeichen? Java Basics - Anfänger-Themen 5
I Methoden Wochenkalendar switch anweisung fehlt Java Basics - Anfänger-Themen 4
D Verschachtelte IF-Anweisung Java Basics - Anfänger-Themen 10
C If-Anweisung Java Basics - Anfänger-Themen 22
C Switch Anweisung Frage Java Basics - Anfänger-Themen 8
M Bedingte Anweisung mit Boolean Java Basics - Anfänger-Themen 2
Luk10 Frage zu Switch-Anweisung Java Basics - Anfänger-Themen 11
C Umgebungsvariable import anweisung gibt fehlermeldung Java Basics - Anfänger-Themen 2
A if Anweisung in Schleife Java Basics - Anfänger-Themen 10
C Erste Schritte switch Anweisung geht nicht Java Basics - Anfänger-Themen 3
R fif-Anweisung funktioniert nicht wie erwartet Java Basics - Anfänger-Themen 11
B IF-Anweisung hat einen Fehler Java Basics - Anfänger-Themen 5
C unklare anweisung Java Basics - Anfänger-Themen 11
F if Anweisung mit Rückgabewert? Java Basics - Anfänger-Themen 4
C Problem bei if-anweisung Java Basics - Anfänger-Themen 8
J print-Anweisung verschluckt Java Basics - Anfänger-Themen 3
K return-Anweisung am Beispiel eines Palindroms Java Basics - Anfänger-Themen 18
F Problem bei if-Anweisung Java Basics - Anfänger-Themen 5
J Switch mit if anweisung kombinieren Java Basics - Anfänger-Themen 2
D Frage zu Exceptions und der import Anweisung Java Basics - Anfänger-Themen 12
R Return Anweisung übergibt Variablen nicht Java Basics - Anfänger-Themen 4
W Problem While-Anweisung Java Basics - Anfänger-Themen 6
S import - Anweisung; Setzen der Classpath Java Basics - Anfänger-Themen 2
E IF Anweisung mit logischen Operatoren Java Basics - Anfänger-Themen 18
B problem mit der return anweisung Java Basics - Anfänger-Themen 11
M '-1' in switch anweisung Java Basics - Anfänger-Themen 2
B import Anweisung Java Basics - Anfänger-Themen 2
A Super-Anweisung in abstrakter Klasse Java Basics - Anfänger-Themen 12
T Schleife mit return Anweisung Java Basics - Anfänger-Themen 3
S OOP This anweisung Java Basics - Anfänger-Themen 6
B fehlende return anweisung? Java Basics - Anfänger-Themen 17
A Return Anweisung von Methoden Java Basics - Anfänger-Themen 15
L Verstehe den Wert nicht! If-Anweisung Java Basics - Anfänger-Themen 5
J Was genau davon ist Anweisung, was Deklaration? Java Basics - Anfänger-Themen 2
S SQL Anweisung mittels PreparedStatement Java Basics - Anfänger-Themen 15
L if else anweisung Java Basics - Anfänger-Themen 2
B If Anweisung (Kasdiert) Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben