2012-08-16 3 views
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 your Question"에 입력 한 것처럼 보이지 않으며 다른 사람도 마찬가지입니다. 왜 어떤 생각?Java 사용자로부터 사용자 입력 받기

나는 내가 한 번 클릭하면 "선택을하십시오"라고 갈 것입니다.

하지만 동시에 인쇄하는 것 같아서이 문제를 해결해야 "Enter your question"질문에 대답 할 수 없게됩니다. 입력 나오기 전까지

CollectionCreation 그냥 형식 유추

답변

2

당신이 System.in에서 읽고 Beacuse를 사용하여 ArrayList를()를 반환, 스캐너는 모든 입력을받지 않습니다. 따라서 nextInt()을 사용하는 int 만 읽으면 버퍼에 읽지 않은 새 줄 바꿈이 있고 다음 번 input.nextLine() 호출에서 즉각적으로 읽습니다. (빈 문자열이됩니다.)

nextInt) 꽵에.(). 또한

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

, 당신은 nextInt() 호출 한 후 스캐너를 reset()

+0

나는이 numOfQuestions을하고 시도 =있는 Integer.parseInt은 (input.nextInt은() 트림());하지만 여전히 작동하지 않습니다 – user962206

+0

@ user962206 죄송합니다, typo. nextLine()이어야합니다. –

관련 문제