如何让String扫描程序等待?

时间:2013-12-16 20:57:58

标签: java

我一直试图让这个东西起作用,但事实并非如此。我想将int Scanner替换为String Scanner,但是当我这样做时,它不会等待用户输入他的答案。

System.out.println("Ditt val: "+ prov.GetCategoryName(nVal-1));
cat = prov.GetCategory(nVal-1);
int nCorrectAnswers = 0;

for(int i = 0; i < cat.nNumQuestions; i++){
    System.out.print(cat.taskArray[i].sQuestion +": ");
    int nMyAnswer = scan.nextInt();

    if(nMyAnswer == 1){
        nCorrectAnswers++;
    }
}

假设我有3个问题,如果我有int,它等待用户对每个问题的答案,但如果我有字符串,它只是直接打印3个问题。 我如何使用String nMyAnswer = scan.nextLine();等待用户回答问题。

1 个答案:

答案 0 :(得分:-1)

来自方法nextLine()的API:

  

使此扫描程序超过当前行并返回跳过的输入。

尝试next()方法。

  

查找并返回此扫描仪的下一个完整令牌。

所以你的代码是:

System.out.println("Ditt val: "+ prov.GetCategoryName(nVal-1));
cat = prov.GetCategory(nVal-1);
int nCorrectAnswers = 0;

for(int i = 0; i < cat.nNumQuestions; i++){
    System.out.print(cat.taskArray[i].sQuestion +": ");
    String nMyAnswer = scan.next();

    if(nMyAnswer == 1){
        nCorrectAnswers++;
    }
}

基本上,nextLine()用于扫描文件中的一行,它会扫描字符串,直到找到等价的\ n。