Java Scanner实用程序不允许用户在循环中重新输入输入

时间:2016-11-17 20:53:04

标签: java loops java.util.scanner do-while

只是尝试用一些练习程序包围Java编码并尝试使用循环和扫描器实用程序,并在尝试使用扫描程序检查是否输入了正确的输入并获取程序时遇到了问题循环,直到输入正确的输入。

import java.util.Scanner;

public class Calculator {

    public static void main(String[] args) {

        Scanner s = new Scanner(System.in);
        int numbOne;
        boolean checker;

        System.out.println("please enter an Interger");

        do{
            if(s.hasNextInt()){
                numbOne = s.nextInt();
                System.out.println("Yay it worked!!!"); 
                checker = true;
            }
            else{
                System.out.println("I told you to enter an integer you idiot\nTRY AGAIN!!!!!!");
                checker = false;
            }
        }
        while(checker == false);

    }

}

基本上应该发生的是,一旦程序进入循环,它就会要求用户输入一个整数,如果用户输入一个整数,它会显示消息"它是否正常工作!!!"并且跳出循环,但是如果用户输入字符串或任何其他值,则代码循环并且应该再次请求输入。

然而我遇到的问题是程序只询问输入一次,如果输入了错误的输入,程序只是一遍又一遍地循环else语句而不再询问用户输入。

知道我做错了吗?

1 个答案:

答案 0 :(得分:-2)

您需要使用下一个令牌。尝试在else-block中调用SELECT a.ReportCode AS LegacyReportCode b.ReportCode AS CurrentReportCode, (CASE WHEN a.Reportcode = b.ReportCode THEN 'ReportCode Matched' WHEN a.ReportCode IS NULL THEN 'In Current not in Legacy' WHEN b.ReportCode IS NULL THEN 'In Legacy not in Current' ELSE 'Mismatch' END) AS ReportCodeMatchResult, a.TransactionID AS LegacyTransactionID, b.TransactionID AS CurrentTransactionID FROM dbo.LegacySystem a FULL OUTER JOIN dbo.CurrentSystem b ON a.TransactionID = b.TransactionID AND a.ReportCode = b.ReportCode;

基本上' hasNextInt()'方法是一个peek方法,但它永远不会消耗那个输入,因此一直看着相同的输入。