2012-08-16 337 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"); 

    } 
} 

我在这里的问题是,当循环开始时,我似乎无法输入在“输入你的问题”下的问题本身,其他人也一样。任何想法为什么?Java获取用户输入

我期待的是,一旦我点击输入它会去“输入选择”。

但是,它似乎他们在同一时间打印,因此使我无法回答“输入你的问题”,我应该解决这个问题吗?

CollectionCreation刚刚返回使用类型推断

回答

2

怎么一回事,因为你是从System.in读取的ArrayList(),直到你按下回车键,扫描仪将无法获得任何输入。因此,当你只使用nextInt()读取一个int时,缓冲区中有一个额外的换行符不会被读取,并且在下一个input.nextLine()调用中立即读取(它将是一个空字符串)。

尝试更改nextInt )到nextLine():

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

或者,您可以在nextInt()调用后reset()扫描仪

+0

我试着这样做numOfQuestions =的Integer.parseInt(input.nextInt()修剪());但它仍然不起作用 – user962206 2012-08-16 01:32:12

+0

@ user962206对不起,错字。应该是nextLine() – 2012-08-16 01:39:49