多肢選択問題のリストを表示するプログラムを作成しています。Java クラスの ChoiceString データ メンバーに格納されている値に問題があります。クラスの各インスタンスには ChoiceString の独自の値が必要ですが、何らかの理由で ChoiceString は最初のインスタンスによって初期化された値のみを保持し、それを他のインスタンスと共有します。ここで、各インスタンスに独自の ChoiceString の一意の値を持たせます。どうすれば修正できますか?
以下は私のコードです:
public class AllChoiceQuestion extends ChoiceQuestion{
private String note = "Note: The following question has one or more correct choices\nYou must give the number(s) of ALL correct anwers, in order,\nto get full credit andsperated by spaces";
private int count =0;
// A varabile that will hold the user answer
private String choiceString;
public AllChoiceQuestion(String questionText) {
// initilize the question text value
super(questionText);
choiceString="";
}
public void addChoice(String choice, boolean correct){
super.addChoice(choice, correct);
if(correct == true){
count++;
choiceString += "" + count+" " ;
}
super.setAnswer(choiceString.trim());
}
public void display(){
System.out.println(note);
super.display();
}
public String toString(){
return note +"\n"+ super.toString();
}
}
これは私のインスタンスのコードです
ChoiceQuestion allchoicequestion1 = new AllChoiceQuestion("Which of the basic data type(s) has the size of 16 bit?");
allchoicequestion1.addChoice("Char", true);
allchoicequestion1.addChoice("Short", true);
allchoicequestion1.addChoice("Float", false);
allchoicequestion1.addChoice("Double", false);
ChoiceQuestion allchoicequestion2 = new AllChoiceQuestion("Which of the basic data type(s) has the size of 64 bit?");
allchoicequestion2.addChoice("Long", false);
allchoicequestion2.addChoice("Doulbe", false);
allchoicequestion2.addChoice("Byte", true);
allchoicequestion2.addChoice("Int", true);
したがって、allChoiceQuestion1 の ChoiceStrng は 1 2 であり、ChoiceString forallChoiceQuestion2 は 3 4 である必要がありますが、forallChoiceQuestion2 の回答として 3 4 を入力するたびに、間違った回答が返されますが、1 2 と入力すると正しいでしょう。