Semikolonfehler,aber nicht lösbar..

Vitalia

Mitglied
Hi,

da ich nun leider noch ein großes Problem habe und dieses nicht lösen kann,trotz mehrerer Lösungmöglichkeiten,wollte ich fragen,ob einer mir helfen könnte? :bahnhof: ;(

Screenshot (11).jpg

Dazu gehöriger Java-Code:
Java:
public class Frage
{
    int zufall;
    String frage[] = new String [19];
    static String fragen;
    public Frage(){
        frage[1] = "Wie viele Planeten besitzt unser Sonnensystem?$8$9$7$15$1  ";
        frage[2] = "Welches ist die Hauptstadt von Deutschland?$München$Bonn$Berlin$Düsseldorf$3 ";
        frage[3] = "Frage 3?$Antwort1$Antwort2$Antwort3$Antwort4$1";
        frage[4] = "Frage 4?$Antwort1$Antwort2$Antwort3$Antwort4$2";
        frage[5] = "Frage 5?$Antwort1$Antwort2$Antwort3$Antwort4$4";
        
        frage = frage[zufall(1,7)];
        

    }
    public int zufall(int min,int max)
    
    {
        zufall = (int)((max-min))*Math.random()+ min);
        //zufall = integer von max- min mal Math-Random+minimum 
        //(Erhalten eine Zahl zwischen min und max.)
        //mathematischer Algurithymus
        return zufall;
    }
}

Die Klassen zum Compilieren:
1.
Java:
public class frage_change
{
    static String ri_frage = null;
    static String op1 = null;
    static String op2 = null;
    static String op3 = null;
    static String op4 = null;
    static int lösung = 0;
    
    static Quiz_Fenster quiz;
    static Fragen frage_klasse;
    static String akt_Frage;
    public frage_change(){
        
        Quiz_Fenter quiz = new Quiz_Fenster();
        neueFrage();
    }
    public static void neueFrage() {
        frage_klasse = new Fragen();
        akt_Fragen = Frage.fragen;
        
        parser();
        aendereText();
    }
    public static void parser() {
        String[] fragen = akt_fragen.split("\\$");
        //String(frage) wird gesplittet und Aufgeteilt und ergebnis wird in Frage gespeichert.
        for(int x = 0;x<fragen.lenght;x++){
            //Auslesen von String
            switch(x){ 
                case 0:
                ri_frage = frage [x];
                break;
                
                case 1:
                op1 = frage[x];
                break;
                
                case 2:
                op1 = frage[x];
                break;
                
                case 3:
                op1 = frage[x];
                break;
                
                case 4:
                op1 = frage[x];
                break;

                case 5:
                loesung = Integer.parseIn(frage[x]);
                break;
            }
        }
        }
            
    public static void aendereText(){
        quiz.ChangeLabelText(ri_frage);
            quiz.loesung= loesung;
            quiz.ChangeButtonText(1,op1);
            quiz.ChangeButtonText(2,op2);
           quiz.ChangeButtonText(3,op3);
           quiz.ChangeButtonText(4,op4);
    }
        
    

    }


2.
Java:
import java.awt.*;
import javax.swing.*;

public class Quiz_Fenster 
{
    Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
    JLabel fragen;
    JButton ant[] = new JButton[4];
    JFrame w1;
    JProgressBar b;
    
    int lösung,richtig;
    
   
    public static void main (String[] args) {
        new fragen_change();
    }
    public Quiz_Fenster(){
        w1 = new JFrame();
        w1.setSize(400,300);
        w1.setLocation((int) (dim.getWidth()-400)/2, (int)(dim.getHeight()-300)/2);
        w1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        w1.setVisible(true);
        w1.setLayout(null);
        
        ant[0] = new JButton("   ");
        ant[0].setBounds(52,90,120.40);
        w1.add(ant[0]);
        
        ant[1] = new JButton("   ");
        ant[1].setBounds(52,160,120.40);
        w1.add(ant[1]);
        
        ant[2] = new JButton("   ");
        ant[2].setBounds(220,90,120.40);
        w1.add(ant[2]);
        
        ant[3] = new JButton("   ");
        ant[3].setBounds(220,160,120.40);
        w1.add(ant[3]);
        
        frage = new JLabel("Hier steht die frage!");
        frage.setBounds(52,15,230,40);
        w1.add(frage);
        
        b = new JProgressBar(0,100);
        b.setBounds(129,220,140,25);
        b.setValue(0);
        b.setStringPained(true);
        w1.add(b);
        
        
    }
    public void ChangeButtonText(int button,String text)
    {
        ant[button-1].setText(text);
    }
    public void ChangeLabelText(String text)
    {
        frage.setText(text);
    }
}

Vielen Dank schonmal...
 
Eher wird eine Klammer zu wenig geöffnet, oder?
Wenn man die schließende Klammer weg macht, löst es nicht das Problem das Math.random() ein double ist.
 
Ich habe dieses Problem gelöst durch weglassen einer Klammer:

zufall = (int) ((max-min)*Math.random() + min);

jedoch habe ich nun einen weiteren fehler habe,so dass er bei

frage = frage[zufall(1,7)];

es wird folgendes ausgegeben:

incompartiable types: java.lang.String cannor be converted to java.lang.String[]
 
Jupp, du meintest wohl eher
fragen = frage[zufall(1,7)];

Du musst unbedingt lernen deine Fehler alleine zu lösen.
Ich meine dir wird die Zeile angezeigt sowie der Fehler den der Compiler anmeckert.
"Kann String nicht zu String[] konvertieren"
Genau wie die Klammer, das sind Fehler auf einfachstem Niveau.
Fehler lesen und interpretieren gehört zu den wichtigsten Fähigkeiten in der Softwaretechnik, da ununterbrochen überall Fehler auftreten werden.
In den wirklich seltensten Fällen passiert es das selbst der erfahrenste Programmierer keine Fehler macht.

Wollte ich nur mal anmerken, da du hier in "Allgemeine Java-Themen" geposted hast.
 
Es ist mir ein einziges Mal gelungen etwas komplizierteres zu implementieren und es hat auf Anhieb anstandslos so funktioniert, wie ich wollte. Ich habe mich so gefreut, dass ich sofort aufgehört habe und bin den Rest des Tages mit einem Grinsen von Ohr zu Ohr rumgelaufen.
Was ich damit sagen will ist, dass Network vollkommen Recht hat. Wenn der Kompiler schon so freundlich ist und dir eine vernünftige Fehlermeldung gibt, solltest du sie auch lesen können.

Um solche Fehler auf Anhieb zu sehen, brauchst du Übung. Nicht nur im Programmieren an sich sondern auch im Fehlerlösen oder auch "Debuggen" oder "Debugging".


Die Bezeichner sind nicht zielführend. Du hast eine Klasse Frage, welche ein Array (Arrays enthalten in der Regel mehrere Elemente) namens frage und einen String namens fragen enthält. Das man da durcheinander kommt ist klar. Dann gibt es noch eine Klasse frage_change. Klassen immer groß und nach dem UpperCamelCase.

Warum enthält Frage mehrere Fragen?
Warum sind die nicht änderbar?
Warum steht die Antwort nicht in Frage?
Warum benutzt du nicht Random#nextInt(int)?
Es heißt AlgOrithmus 😉
 

Zurück
Oben