0
import java.util.List;

import ShortHand.utilities.CollectionCreation;

public class MultipleChoice<Q,A,C>
{
    Q question;
    A answer;
    C choices;

    public MultipleChoice(Q q, A a, C c){
        question = q;
        answer = a;
        choices = c;
    }

    public Q getQuestion(){ return question;  }
    public A getAnswer(){ return answer;  }
    public C getChoices(){ return choices;  }

    public void addChoices(C c ){ choices = c; }
    public void addQuestion(Q q){ question = q; }
    public void addAnswer(A a){ answer = a; }

    public String toString(){
         return "Question: "+this.getQuestion()+ "\n"+
                "Choices: "+this.getChoices();
    }

    public static void main(String[] args){
        java.util.Scanner input = new java.util.Scanner(System.in);

        List<MultipleChoice<String,String,String>> mc = CollectionCreation.list();
        int numOfQuestions;
        System.out.print("Enter number of Question: ");
        numOfQuestions = input.nextInt();
        System.out.println();
        for(int i = 0; i< numOfQuestions; i++){
            System.out.println("Enter Question: ");
            String question = input.nextLine();
            System.out.println("Enter choices: ");
            String choices = input.nextLine();
            System.out.println("Enter Answer: ");
            String answer = input.nextLine();
            mc.add(new MultipleChoice(question,choices,answer));
        }

        for(MultipleChoice<String, String, String> items : mc)
            System.out.println(items+"\n");

    }
}

ここでの私の問題は、ループが開始されたときに、「質問を入力してください」の下にある質問自体に入力できないように見えることです。他の人にも同じことが言えます。理由はありますか?

私が期待しているのは、Enterをクリックすると「Enter The Choices」に移動することです。

しかし、それらは同時に印刷されているように見えるため、「質問を入力してください」に答えることができません。これを修正する必要がありますか?

CollectionCreation は、型推論を使用して arrayList() を返すだけです

4

1 に答える 1

2

から読み取っているSystem.inため、Enter キーを押すまでスキャナは入力を取得しません。したがって、を使用して int のみを読み取ると、読み取られないnextInt()余分な改行がバッファーにあり、次のinput.nextLine()呼び出しで即座に読み取られます (空の String.

nextInt() を nextLine() に変更してみてください。

numOfQuestions = Integer.parseInt(input.nextLine().trim());

または、通話reset()後にスキャナーを使用することもできます。nextInt()

于 2012-08-16T01:12:13.877 に答える