java中没有scanner_如何使用java.util.Scanner验证输入?

小编典典

示例1:验证正整数

这是一个hasNextInt()用于int从输入中验证肯定的简单示例。

Scanner sc = new Scanner(System.in);

int number;

do {

System.out.println("Please enter a positive number!");

while (!sc.hasNextInt()) {

System.out.println("That's not a number!");

sc.next(); // this is important!

}

number = sc.nextInt();

} while (number <= 0);

System.out.println("Thank you! Got " + number);

结果:

Please enter a positive number!

five

That's not a number!

-3

Please enter a positive number!

5

Thank you! Got 5

请注意Scanner.hasNextInt(),与更详细try/catch Integer.parseInt/ NumberFormatException组合相比,使用起来要容易得多。通过合同,一个Scanner 保证,如果它hasNextInt(),然后nextInt()将安静地给你int,并不会引发任何NumberFormatException/ InputMismatchException/ NoSuchElementException。

示例2:hasNextXXX同一令牌上有多个

请注意,上面的代码段包含一个sc.next()语句,以使Scanner直到它前进hasNextInt()。重要的是要意识到,没有一种 hasNextXXX 方法可以 Scanner 超越任何输入!你会发现,如果你从代码段中省略了这一行,那么它将在无效输入上陷入无限循环!

这有两个结果:

如果你需要跳过“垃圾”输入失败的hasNextXXX测试,那么你需要提前Scanner一个这样或那样的(例如next(),nextLine(),skip等)。

如果一项hasNextXXX测试失败,你仍然可以进行测试hasNextYYY!

这是执行多个hasNextXXX测试的示例。

Scanner sc = new Scanner(System.in);

while (!sc.hasNext("exit")) {

System.out.println(

sc.hasNextInt() ? "(int) " + sc.nextInt() :

sc.hasNextLong() ? "(long) " + sc.nextLong() :

sc.hasNextDouble() ? "(double) " + sc.nextDouble() :

sc.hasNextBoolean() ? "(boolean) " + sc.nextBoolean() :

"(String) " + sc.next()

);

}

输出结果:

5

(int) 5

false

(boolean) false

blah

(String) blah

1.1

(double) 1.1

100000000000

(long) 100000000000

exit

请注意,测试顺序很重要。如果是Scanner hasNextInt(),那么它也是hasNextLong(),但不一定true是相反的方式。通常,你想在进行更通用的测试之前先进行更具体的测试。

示例3:验证元音

Scanner具有正则表达式支持的许多高级功能。这是一个使用它来验证元音的示例。

Scanner sc = new Scanner(System.in);

System.out.println("Please enter a vowel, lowercase!");

while (!sc.hasNext("[aeiou]")) {

System.out.println("That's not a vowel!");

sc.next();

}

String vowel = sc.next();

System.out.println("Thank you! Got " + vowel);

输出结果:

Please enter a vowel, lowercase!

5

That's not a vowel!

z

That's not a vowel!

e

Thank you! Got e

2020-01-10

### 回答1: 这个错误通常表示编译器无法找到所需的类或包。这可能是因为您没有正确设置类路径或者在代码拼写错误。 您可以尝试以下几种方法来解决此问题: 1. 确认您的代码没有拼写错误,特别是类和包名。 2. 检查您的类路径设置是否正确,确保您的代码可以找到所需的类和包。 3. 如果您使用的是IDE,可以尝试重新导入项目或重建项目,以确保所有依赖项正确配置。 4. 确认您的Java版本与您的代码所需的Java版本相匹配。 如果您仍然无法解决问题,请尝试提供更多信息,例如您的代码和完整的错误消息,以便更好地帮助您解决问题。 ### 回答2: java.util.Scanner.throwFor(未知源)错误通常是由于在代码使用Scanner类的一些方法时出现了问题。这个错误的出现提示我们在某一处地方使用Scanner类的方法,但是编译器无法确定这个方法的确切位置。 要解决这个错误,我们可以尝试一些方法。 首先,我们可以检查代码是否有Scanner类的相关行。如果有,我们可以仔细检查这些代码行,确保正确使用Scanner类的方法。例如,我们要确保Scanner类的对象正确初始化,并且使用了正确的方法,比如nextLine、nextInt等。 其次,我们可以检查代码是否有可能导致Scanner类的使用出现问题的其他因素。例如,我们要确保需要从用户输入读取内容的地方,确实存在可以供Scanner类读取的内容,比如用户在控制台输入了数据。 另外,我们还可以尝试更新或重新安装Java的开发环境(JDK),以确保我们使用的是正确的和兼容的Java版本。 如果上述方法都无法解决问题,我们可以尝试在网上搜索相关的错误信息。可能有其他开发者也遇到过类似的问题,并且提供了有效的解决方案。 总的来说,java.util.Scanner.throwFor(未知源)错误表明我们在使用Scanner类的时候出现了问题。通过仔细检查代码,确保正确使用Scanner类的方法,并确保提供了需要读取的内容,可以解决这个错误。如果问题仍然存在,可以尝试更新或重新安装Java开发环境,或者搜索网上的解决方案。 ### 回答3: java.util.Scanner.throwFor(未知源)错误是Java编译器报告的一种错误。该错误通常出现在使用Scanner类时,表示代码存在一些问题导致无法正确执行。考虑以下可能的原因和解决方法: 1. 错误的导入:请确保已正确导入java.util.Scanner类。在代码的开头加入`import java.util.Scanner;`语句。 2. 语法错误:检查代码的语法错误,如拼写错误、缺少分号、括号不匹配等。通过仔细检查代码,定位并修复错误。 3. 输入错误:当使用Scanner类时,需要注意输入格式和类型。如果输入与代码要求的格式或类型不匹配,会引发未知源错误。确保输入与代码指定的数据类型匹配,或者在使用Scanner类时进行适当的类型转换。 4. 缺少输入:如果代码使用Scanner类来接收输入,而实际运行时没有提供足够的输入,就会出现未知源错误。确保在使用Scanner类之前先检查是否有足够的输入。 5. 输入源关闭:如果在使用Scanner类时,输入源(如控制台输入)被错误地关闭,就会导致未知源错误。确保在使用Scanner类之后,不要关闭输入源。 总而言之,解决java.util.Scanner.throwFor(未知源)错误的关键是仔细检查代码,并确保代码与输入的匹配。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值