Permalänk
Medlem

frågesport i java

...har fått lite problem igen, om jag vill att programmet ska köras till sista frågan och att man då får "betyget" hur gör jag då...? kan jag ha flera else-satser?

import javax.swing.*;

public class Quiz {

public static void main(String [] arg) {

String svar;
JOptionPane.showMessageDialog(null, "Välkommen till filmquiz!");
svar = JOptionPane.showInputDialog("fråga 1?");
if (svar.equalsIgnoreCase("rätt svar"))
svar = JOptionPane.showInputDialog("fråga 2?");
if (svar.equalsIgnoreCase("rätt svar"))
svar = JOptionPane.showInputDialog("fråga 3");
if (svar.equalsIgnoreCase("rätt svar"))
//och så vidare...

JOptionPane.showMessageDialog(null, "Högsta poäng!");

else

JOptionPane.showMessageDialog(null, "dåligt!");

Permalänk
Medlem

Om du menar att du vill nästla alla frågor skulle jag avråda dig till det. Lägg alla frågor i en lista och loopa igenom den och sammanställ sedan svaren när användaren han svarat på alla frågor.

Om du inte har koll på vad nästling är så har du ett exempel här:

if() { if() { if() { } else { // etc. } } else { } } else { }

Du skulle kunna göra något i stil med det här istället (Question är en klass du måste skapa själv):

// Deklarera en lista med frågorna. List<Question> questions = new ArrayList<Question>(); // Lägg in alla frågor i listan. int correct = 0; int wrong = 0; boolean answer; for(Question q : questions) { if(JOptionPane.showInputDialog(e.getQuestion()).equalsIgnoreCase(e.getCurrectAnswer())) { correct++; } else { wrong++; } } float score = ((float)correct/(float)questions.size())*100; JOptionPane.showMessageDialog("Du hade " + score + "% rätt.");

Nu fungerar säkert inte den här koden korrekt men jag hoppas du förstår vad jag menar.

Permalänk
Medlem

Du använder e istället för q.
wrong används ej
answer används ej

men annars ser det rätt ut

Permalänk
Medlem

hm, förstår på sätt o vis, men inte riktigt hur jag ska få ihop det, skriver jag in alla frågor i början av programmet och sen int correct = 0;
int wrong = 0; etc.?

Permalänk
Medlem

Något i stil med det här kanske (koden är inte testad):

public class Quiz { private List<Question> questions = new ArrayList<Question>(); public Quiz() { questions.add(new Question("Vad heter jag?", "Quiz")); // Lägg in fler frågor här... int correct = 0; for(Question q : questions) { if(JOptionPane.showInputDialog(q.getQuestion()).equalsIgnoreCase(q.getCorrectAnswer())) { correct++; } } float score = ((float)correct/(float)questions.size())*100f; JOptionPane.showMessageDialog("Du svarade rätt på " + score + "% av " + questions.size() + " frågor."); } public static void main(String[] args) { new Quiz(); } class Question { private String question; private String correctAnswer; public Question(String question, String correctAnswer) { this.question = question; this.correctAnswer = correctAnswer; } public String getQuestion() { return question; } public String getCorrectAnswer() { return correctAnswer; } } }

Permalänk
Medlem

hm, känns som att jag är lite för mycket nybörjare för att förstå era svar helt...

Permalänk
Medlem

om jag vill använda en nästlad if-sats, betyder det att jag kan använda flera if och else, om jag lägger till "måsvingar"?

Permalänk
Medlem

och om jag vill skapa en lista, skapar jag då ett till program där jag har alla frågor och anropar det från det andra programmet? ursäkta om jag låter väldigt okunnig, men har bara läst i knappt två månader=)

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av coka
om jag vill använda en nästlad if-sats, betyder det att jag kan använda flera if och else, om jag lägger till "måsvingar"?

Citat:

Ursprungligen inskrivet av coka
och om jag vill skapa en lista, skapar jag då ett till program där jag har alla frågor och anropar det från det andra programmet? ursäkta om jag låter väldigt okunnig, men har bara läst i knappt två månader=)

questions.add(new Question("Fråga 1?", "svar på fråga 1"));
questions.add(new Question("Fråga 2", "svar på fråga 2"));
questions.add(new Question("Fråga 3", "svar på fråga 3"));
questions.add(new Question("Fråga 4", "svar på fråga 4"));
...
...