Java获取用户输入
问题描述:
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刚刚返回使用类型推断
答
怎么一回事,因为你是从System.in
读取的ArrayList(),直到你按下回车键,扫描仪将无法获得任何输入。因此,当你只使用nextInt()
读取一个int时,缓冲区中有一个额外的换行符不会被读取,并且在下一个input.nextLine()
调用中立即读取(它将是一个空字符串)。
尝试更改nextInt )到nextLine():
numOfQuestions = Integer.parseInt(input.nextLine().trim());
或者,您可以在nextInt()
调用后reset()
扫描仪
我试着这样做numOfQuestions =的Integer.parseInt(input.nextInt()修剪());但它仍然不起作用 – user962206 2012-08-16 01:32:12
@ user962206对不起,错字。应该是nextLine() – 2012-08-16 01:39:49