开发者

Blank input from scanner - java

What I'm trying to do is if the user clicks on the enter key the program should throw a BadUserInputException. My problem is whenever I press the enter key it just puts me in another line in the console essentially doing nothing.

Scanner input = new Scanner(System.in);
    System.out.println("Enter Student ID:");

    String sID = null;
    if (input.hasNextInt()==false){
    开发者_Go百科    System.out.println("Please re-check the student number inputted. Student number can only be digits.");
        throw new BadUserInputException("Student number can not contain non-digits.");
    }else if (input.next()==""){
        throw new BadUserInputException("Student number can not be empty");
    }


I am encountering this exact problem, and I believe I figured out a solution.

The key is to accept input as type String and use the .isEmpty() method to check whether the user entered anything or not.

If your String is named "cheese" and your scanner is named "in", here's what this looks like:

cheese = ""; // empty 'cheese' of prior input
cheese = in.nextLine(); //read in a line of input

//if user didn't enter anything (or just spacebar and return)
if(cheese.isEmpty()) {
System.out.println("Nothing was entered. Please try again");
} 
//user entered something
else {
[enter code here checking validity of input]
}

I tried implementing this check for integer input and discovered it's better to accept String type input and convert it to int type with a wrapper class. If you have

int eger = 0; //initialize to zero

then you would put this code in the else statement above:

else{
eger = Integer.valueOf(cheese);
}

I am aware that this question was asked 2 years ago, but I posted this in hopes of helping others like myself who were looking for an answer. :)


The scanner looks for tokens between whitespaces and newlines - but there aren't any. I don't tend to use Scanner for reading from standard input - I use the old-fashioned BufferedReader method like this:

BufferedReader buf = new BufferedReader (new InputStreamReader (System.in));

and then I can say

String line = buf.readLine ();
if (line.equals ("")) blah();

There may be an easier solution however.


Just use nextLine() method instead of next() while scanning the String and finally check the string using isEmpty() method. This Worked for me..


You need to compare strings with the .equals method, not ==.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜