Leider habe ich ein kleines Problem mit diesem kleinen QuizCode. Ich habe schon mehrmals drüber geschaut und keinen Fehler gefunden.
in den Anhängen könnt ihr das Program finden und der Fehlercode ist folgender:
Exception in thread "main" java.lang.NullPointerException
at Fragen_Change.parser(Fragen_Change.java:34)
at Fragen_Change.neueFrage(Fragen_Change.java:27)
at Fragen_Change.<init>(Fragen_Change.java:18)
at Quiz_Fenster.main(Quiz_Fenster.java:26)
Zum ProgramCode:
public class Fragen {
int zufall;
String fragen[] = new String[19];
static String frage;
public Fragen() {
fragen[1] = "Wer gewann die EM 2008?$Saudi-Arabien$China$Spanien$Deutschland$3";
fragen[2] = "Was hat Gandhi studiert?$Medizin$Jura$Lituratur$Nichts$2";
fragen[3] = "Eine Weltmacht ist...?$Luxenburg$USA$Chile$Afganistan$2";
frage = fragen[zufall(1,7)];
}
public int zufall(int min, int max) {
zufall = (int)((max-min)*Math.random()+min);
return zufall;
}
}
-------------------
public class Quiz_Fenster implements ActionListener{
Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
JLabel frage;
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);
ant[0].addActionListener(this);
w1.add(ant[0]);
ant[1] = new JButton (" ");
ant[1].setBounds(52, 160, 120, 40);
ant[1].addActionListener(this);
w1.add(ant[1]);
ant[2] = new JButton (" ");
ant[2].setBounds(220, 90, 120, 40);
ant[2].addActionListener(this);
w1.add(ant[2]);
ant[3] = new JButton (" ");
ant[3].setBounds(220, 160, 120, 40);
ant[3].addActionListener(this);
w1.add(ant[3]);
frage = new JLabel("Hier steht die Frage!");
frage.setBounds(52, 15,250,40);
w1.add(frage);
b = new JProgressBar(0, 100);
b.setBounds(120, 220, 140, 25);
b.setValue(0);
b.setStringPainted(true);
w1.add(b);
}
public void actionPerformed(ActionEvent e) {
if(e.getSource() == ant[0]) {
if(lösung == 1) {
Nachricht("Richtig"," Weiterso...");
Prozent();
Fragen_Change.neueFrage();
}else {
Nachricht("Falsch","Nicht so::");
}
}
if(e.getSource() == ant[1]) {
if(lösung == 2) {
Nachricht("Richtig"," Weiterso...");
Prozent();
Fragen_Change.neueFrage();
}else {
Nachricht("Falsch","Nicht so::");
}
}
if(e.getSource() == ant[2]) {
if(lösung == 3) {
Nachricht("Richtig"," Weiterso...");
Prozent();
Fragen_Change.neueFrage();
}else {
Nachricht("Falsch","Nicht so::");
}
}
if(e.getSource() == ant[3]) {
if(lösung == 4) {
Nachricht("Richtig"," Weiterso...");
Prozent();
Fragen_Change.neueFrage();
}else {
Nachricht("Falsch","Nicht so::");
}
}
}
public void ChangeButtonText(int button,String text) {
ant[button-1].setText(text);
}
public void ChangeLabelText(String text) {
frage.setText(text);
}
public void Nachricht(String Aussage, String info) {
Object[] options = {"OK"};
JOptionPane.showOptionDialog(null, Aussage, info, JOptionPane.DEFAULT_OPTION, JOptionPane.PLAIN_MESSAGE, null, options, options[0]);
}
public void Prozent() {
if(richtig <=7) {
richtig+=1;
Prozentrechnung(richtig, 8);
}else {
Nachricht("Super !", "Herzlichen Glückwunsch !");
System.exit(0);
}
}
public void Prozentrechnung(int zahl, int gesamt) {
b.setValue((int) 100/gesamt*zahl);
}
}
-----------------
public class Fragen_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 Fragen_Change() {
Quiz_Fenster quiz = new Quiz_Fenster();
neueFrage();
}
public static void neueFrage() {
frage_klasse = new Fragen();
akt_Frage = Fragen.frage;
parser();
aendereText();
}
public static void parser() {
String[] frage = akt_Frage.split("\\$");
for(int x = 0;x< frage.length;x++) {
switch(x) {
case 0:
ri_frage = frage[x];
break;
case 1:
op1 = frage[x];
break;
case 2:
op2 = frage[x];
break;
case 3:
op3 = frage[x];
break;
case 4:
op4 = frage[x];
break;
case 5:
lösung = Integer.parseInt(frage[x]);
break;
}}}
public static void aendereText() {
quiz.ChangeLabelText(ri_frage);
quiz.lösung = lösung;
quiz.ChangeButtonText(1, op1);
quiz.ChangeButtonText(2, op2);
quiz.ChangeButtonText(3, op3);
quiz.ChangeButtonText(4, op4);
}
}
in den Anhängen könnt ihr das Program finden und der Fehlercode ist folgender:
Exception in thread "main" java.lang.NullPointerException
at Fragen_Change.parser(Fragen_Change.java:34)
at Fragen_Change.neueFrage(Fragen_Change.java:27)
at Fragen_Change.<init>(Fragen_Change.java:18)
at Quiz_Fenster.main(Quiz_Fenster.java:26)
Zum ProgramCode:
public class Fragen {
int zufall;
String fragen[] = new String[19];
static String frage;
public Fragen() {
fragen[1] = "Wer gewann die EM 2008?$Saudi-Arabien$China$Spanien$Deutschland$3";
fragen[2] = "Was hat Gandhi studiert?$Medizin$Jura$Lituratur$Nichts$2";
fragen[3] = "Eine Weltmacht ist...?$Luxenburg$USA$Chile$Afganistan$2";
frage = fragen[zufall(1,7)];
}
public int zufall(int min, int max) {
zufall = (int)((max-min)*Math.random()+min);
return zufall;
}
}
-------------------
public class Quiz_Fenster implements ActionListener{
Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
JLabel frage;
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);
ant[0].addActionListener(this);
w1.add(ant[0]);
ant[1] = new JButton (" ");
ant[1].setBounds(52, 160, 120, 40);
ant[1].addActionListener(this);
w1.add(ant[1]);
ant[2] = new JButton (" ");
ant[2].setBounds(220, 90, 120, 40);
ant[2].addActionListener(this);
w1.add(ant[2]);
ant[3] = new JButton (" ");
ant[3].setBounds(220, 160, 120, 40);
ant[3].addActionListener(this);
w1.add(ant[3]);
frage = new JLabel("Hier steht die Frage!");
frage.setBounds(52, 15,250,40);
w1.add(frage);
b = new JProgressBar(0, 100);
b.setBounds(120, 220, 140, 25);
b.setValue(0);
b.setStringPainted(true);
w1.add(b);
}
public void actionPerformed(ActionEvent e) {
if(e.getSource() == ant[0]) {
if(lösung == 1) {
Nachricht("Richtig"," Weiterso...");
Prozent();
Fragen_Change.neueFrage();
}else {
Nachricht("Falsch","Nicht so::");
}
}
if(e.getSource() == ant[1]) {
if(lösung == 2) {
Nachricht("Richtig"," Weiterso...");
Prozent();
Fragen_Change.neueFrage();
}else {
Nachricht("Falsch","Nicht so::");
}
}
if(e.getSource() == ant[2]) {
if(lösung == 3) {
Nachricht("Richtig"," Weiterso...");
Prozent();
Fragen_Change.neueFrage();
}else {
Nachricht("Falsch","Nicht so::");
}
}
if(e.getSource() == ant[3]) {
if(lösung == 4) {
Nachricht("Richtig"," Weiterso...");
Prozent();
Fragen_Change.neueFrage();
}else {
Nachricht("Falsch","Nicht so::");
}
}
}
public void ChangeButtonText(int button,String text) {
ant[button-1].setText(text);
}
public void ChangeLabelText(String text) {
frage.setText(text);
}
public void Nachricht(String Aussage, String info) {
Object[] options = {"OK"};
JOptionPane.showOptionDialog(null, Aussage, info, JOptionPane.DEFAULT_OPTION, JOptionPane.PLAIN_MESSAGE, null, options, options[0]);
}
public void Prozent() {
if(richtig <=7) {
richtig+=1;
Prozentrechnung(richtig, 8);
}else {
Nachricht("Super !", "Herzlichen Glückwunsch !");
System.exit(0);
}
}
public void Prozentrechnung(int zahl, int gesamt) {
b.setValue((int) 100/gesamt*zahl);
}
}
-----------------
public class Fragen_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 Fragen_Change() {
Quiz_Fenster quiz = new Quiz_Fenster();
neueFrage();
}
public static void neueFrage() {
frage_klasse = new Fragen();
akt_Frage = Fragen.frage;
parser();
aendereText();
}
public static void parser() {
String[] frage = akt_Frage.split("\\$");
for(int x = 0;x< frage.length;x++) {
switch(x) {
case 0:
ri_frage = frage[x];
break;
case 1:
op1 = frage[x];
break;
case 2:
op2 = frage[x];
break;
case 3:
op3 = frage[x];
break;
case 4:
op4 = frage[x];
break;
case 5:
lösung = Integer.parseInt(frage[x]);
break;
}}}
public static void aendereText() {
quiz.ChangeLabelText(ri_frage);
quiz.lösung = lösung;
quiz.ChangeButtonText(1, op1);
quiz.ChangeButtonText(2, op2);
quiz.ChangeButtonText(3, op3);
quiz.ChangeButtonText(4, op4);
}
}