java中使用Scanner进行输入验证

时间:2020-02-23 14:34:50  来源:igfitidea点击:

在本教程中,我们将了解在java中如何使用Scanner类进行输入验证。
JavaScanner类用于从用户获取输入。

它提供了几种方法来获取不同类型的输入并验证输入。其中我们将看到其中一些方法,这些方法可以用来获取用户输入并在java中进行输入验证。

Scanner方法来验证用户输入

|方法|描述|
| --- - | --- |
| Boolean hasnext(字符串模式)|如果下一个令牌匹配从指定字符串构造的模式匹配,则返回true。 |
| Boolean hasnext(模式模式)|如果下一个完整的令牌匹配指定的模式,则返回true。 |
| boolean hasnextbigdecimal()|如果此Scanner的输入中的下一个令牌可以使用NextBigDecimal()方法将解释为BigDecimal,则返回True。 |
| boolean hasnextbiginteger()|如果此Scanner的输入中的下一个令牌可以在使用NextBigInteger()方法中可以在默认基数中解释为BigInteger,则返回True。 |
| Boolean hasnextbiginteger(int Radix)|如果此Scanner的输入中的下一个令牌可以在使用NextBigInteger()方法中可以将其作为BigIntex解释为BigInteger,则返回True。 |
| boolean hasnextboolean()|如果使用从字符串“true | false”创建的不区分大小写模式,可以将其解释为布尔值,则返回true。|
| Boolean hasnextbyte()|如果使用NextByte()方法可以将此Scanner的输入中的下一个令牌解释为默认基数中的字节值,则返回True。 |
| Boolean hasnextByte(int Radix)|如果此Scanner的输入中的下一个令牌可以使用NextByte()方法将解释为指定基数中的字节值,则返回true。 |
| boolean hasnextdouble()|如果此Scanner的输入中的下一个令牌可以使用NextDouble()方法可以将其解释为双重值,则返回true。 |
| boolean hasnextfloat()|如果此Scanner的输入中的下一个令牌可以使用NextFloat()方法可以将其解释为浮点值,则返回true。 |
| Boolean hasnextint()|如果此Scanner的输入中的下一个令牌可以将其解释为使用NextInt()方法的默认基数中的int值,则返回true。 |
| Boolean Hasnextint(int Radix)|如果此Scanner的输入中的下一个令牌可以使用nextint()方法可以将此Scanner输入中的下一个标记解释为指定基数中的int值,则返回true。 |
| Boolean hasnextline()|如果此Scanner输入中有另外一行,则返回true。 |
| Boolean hasnextlong()|如果此Scanner的输入中的下一个令牌可以在使用NextLong()方法中可以将此Scanner的输入中的下一个令牌解释为长值,则返回true。 |
| Boolean hasnextlong(int Radix)|如果此Scanner的输入中的下一个令牌可以使用NextLong()方法可以将此Scanner的输入中的下一个令牌解释为LONG值,则返回true。 |
| Boolean hasnextshort()|如果使用NextShort()方法可以将此Scanner的输入中的下一个令牌解释为默认基数中的短值,则返回true。 |
| Boolean hasnextshort(int Radix)|如果使用NextShort()方法可以将此Scanner输入中的下一个令牌解释为指定基数中的短值,则返回true。 |

Scanner方法获取用户输入

|方法|描述|
| --- - | --- |
| String Next(字符串模式)|如果匹配从指定的字符串构造的模式,它会返回下一个令牌。 |
|字符串下一个(图案模式)|如果匹配指定的模式,则返回下一个令牌。 |
| Bigdecimal NextBigdecimal()|它将输入的下一个令牌扫描为BigDecimal。 |
| BigInteger NextBiginteger()|它将输入的下一个标记扫描为BIGINTEGER。 |
| Biginteger NextBiginteger(int Radix)|它将输入的下一个标记扫描为BIGINTEGER。 |
| Boolean NextBoolean()|它将输入的下一个令牌扫描到布尔值并返回该值。 |
|字节NextByte()|它将输入的下一个令牌扫描为字节。 |
|字节NeuttByte(int Radix)|它将输入的下一个令牌扫描为字节。 |
| Double NextDouble()|它将输入的下一个令牌扫描为双倍。 |
| float nextfloat()|它将输入的下一个令牌扫描为浮点数。 |
| INT nextInt()|它将输入的下一个令牌扫描为int。 |
| INT nextInt(int Radix)|它将输入的下一个令牌扫描为int。 |
|字符串Nextline()|它推进了此Scanner超过当前行,并返回跳过的输入。 |
|长期()|它会扫描输入的下一个令牌。 |
|长期龙(int Radix)|它会扫描输入的下一个令牌。 |
| short nextshort()|它扫描了输入的下一个令牌。 |
|短nextshort(int Radix)|它扫描了输入的下一个令牌。 |

使用Scanner类进行输入验证

我们可以使用不同的输入验证进行不同类型的输入验证 hasNextXXX()方法。

使用Java中使用Scanner验证整数输入

我们可以用 hasNextInt()检查输入是否为整数的方法,然后使用 nextInt()方法。
请参阅下面的示例。

import java.util.Scanner;
public class Main
{
    public static void main(String args[]) 
    {
        int input = 0;
        System.out.println("Enter an Integer value ");
        Scanner sc = new Scanner(System.in);
        if(sc.hasNextInt()) {
            input = sc.nextInt();
            if(input>0)
                System.out.println("You entered a positive integer "+input);
            else {
                System.out.println("You entered a negative integer "+input);
            }
        }else {
            System.out.println("Please Enter Valid Integer");
        }
    }
}

输出

Enter an Integer value
50
You entered a positive integer 50

使用Java中使用Scanner进行验证浮点输入

验证浮点值,我们使用过 hasNextDouble()如果输入浮动类型,则返回true的方法 nextDouble()方法用于获取用户输入。

import java.util.Scanner;
public class Main
{
    static Double input;
    public static void main(String args[]) 
    {
        System.out.println("Enter a floating point value ");
        Scanner sc = new Scanner(System.in);
        if(sc.hasNextDouble()) {
            input = sc.nextDouble();
            if(input>0)
                System.out.println("You entered a positive value "+input);
            else {
                System.out.println("You entered a negative value "+input);
            }
        }else {
            System.out.println("Please Enter a Valid Value");
        }
    }
}

输出:

Enter a floating point value
25.21
You entered a positive value 25.21

在Java中使用Scanner验证布尔输入

我们可以用 hasNextBoolean()检查输入是否是有效布尔的方法和 nextBoolean()方法用于获取输入值。

import java.util.Scanner;
public class Main
{
    static Boolean input;
    public static void main(String args[]) 
    {
        System.out.println("Enter a boolean value ");
        Scanner sc = new Scanner(System.in);
        if(sc.hasNextBoolean()) {
            input = sc.nextBoolean();
            System.out.println("You entered a boolean value "+input);
        }else {
            System.out.println("Please Enter a Valid Value");
        }
    }
}

输出

Enter a boolean value
false
You entered a boolean value false

使用Scanner在Java中验证字符串输入

要验证字符串值,我们可以使用 regex以特定格式获取字符串。
其中这是 hasNext()拍摄regex验证只能包含字母表的字符串。
请参阅下面的示例。

import java.util.Scanner;
public class Main
{
    static String input;
    public static void main(String args[]) 
    {
        System.out.println("Enter a String ");
        Scanner sc = new Scanner(System.in);
        if(sc.hasNext("[A-Za-z]*")) {
            input = sc.next();
            System.out.println("You entered a string value "+input);
        }else {
            System.out.println("Please Enter a Valid Value");
        }
    }
}

输出

Enter a String
java
You entered a string value java