2014-11-10 2 views
-3

Я делаю программу викторины. Первый шаг, я беру вопросы викторины и их правильные ответы от учителя/пользователя. У меня есть дочерний класс с именем TrueFalseQuestion, который принимает логический ответ модели и строковый вопрос в качестве параметра. Я создал массив типов TrueFalseQuestion, и я застрял в этой части, где я запускаю код, вставляю вопрос и неважно, является ли ответ модели, который я вставил, true или false, он всегда сохраняется как false, когда я печатаю это из. ПОМОГИТЕ? Вот эта часть моего кода:Всегда получая «ЛОЖНЫЙ»

System.out.println("How many true or false questions would you like to include in your quiz?"); 
    int l=s.nextInt(); 
    TrueFalseQuestion[] qu2= new TrueFalseQuestion[l]; 
    int x; 
    for(x=0;x<l;x++){ 
     System.out.println("Please insert question "+(x+1)+":\n"); 
     String Q2=s.next(); 
     System.out.println("Please insert the correct answer"); 
     boolean A2=s.nextBoolean(); 
     qu2[x]=new TrueFalseQuestion(Q2,A2); 
     System.out.println(qu2[x].GetCorrectAnswer()); 


} 

EDIT: Вот TrueFalseQuestion код

public class TrueFalseQuestion extends Question { 
    private boolean CorrectB; 

    public TrueFalseQuestion(String qu, boolean b){ 
     super(qu); 
    } 
    @Override 
    public void GetQuestion() { 
     System.out.println(getMyText()+"\n Is this statement true or false?"); 
    } 
    @Override public String GetAnswer() { 
     System.out.println("Insert Answer: "); 
     boolean MyAnswer=s.nextBoolean(); 
     return Boolean.toString(MyAnswer); 
    } 

    @Override public String CheckAnswer() { 
    return Boolean.toString(GetAnswer().equalsIgnoreCase(Boolean.toString(GetCorrectAnswer(‌​)))); 
    } 
    /** * return the MyAnswer//* * return the CorrectAnswer/public boolean GetCorrectAnswer() { return CorrectB; } /* * return the MyAnswer */ 

    } 
+0

Возможно, релевантно: http://stackoverflow.com/questions/513832/how-do-compare-strings-in-java, хотя вы не показываете фактический код «сравнить ответы». –

+0

Вы используете == вместо '.equals()'? Вот почему. – ha9u63ar

+0

Мы должны увидеть ваш код для 'TrueFalseQuestion' – dkatzel

ответ

0

ваша проблема ваш конструктор:

public TrueFalseQuestion(String qu, boolean b){ 
    super(qu); 
} 

Вы не установите в поле CorrectB так по умолчанию его значение по умолчанию, которое в Java является false

Исправление составляет

public TrueFalseQuestion(String qu, boolean b){ 
    super(qu); 
    CorrectB = b; 
} 
+0

Я не могу так просто сказать вам! : ') –

0

Проблема nextInt() оставляет «\ п» в потоке и при следующем() выполняет в строки Q2 = s.next(); Он читает «\ n» и не дает вам возможности ввести вопрос.

Попробуйте это:

System.out.println("How many true or false questions would you like to include in your quiz?"); 
int l=Integer.parseInt(nextLine()); 
TrueFalseQuestion[] qu2= new TrueFalseQuestion[l]; 
int x; 
for(x=0;x<l;x++){ 
    System.out.println("Please insert question "+(x+1)+":\n"); 
    String Q2=s.nextLine(); 
    System.out.println("Please insert the correct answer"); 
    boolean A2=s.nextBoolean(); 
    qu2[x]=new TrueFalseQuestion(Q2,A2); 
    System.out.println(qu2[x].GetCorrectAnswer()); 
} 
Смежные вопросы