Scanner s=new Scanner(System.in);
int a=s.nextInt();
while(a<0)
{
System.out.println("please provide non negative integer input ");
a=s.nextInt();
}
System.out.println("the non negative integer input is "+a);
在这里,您需要首先进行字符输入,并检查用户是否提供了字符,如果没有,则再次进行字符输入
char ch = s.findInLine(".").charAt(0);
while(!Charcter.isLetter(ch))
{
System.out.println("please provide a character input ");
ch=s.findInLine(".").charAt(0);
}
System.out.println("the character input is "+ch);
String input;
int number;
try
{
number = Integer.parseInt(input);
if(number > 0)
{
System.out.println("You positive number is " + number);
}
} catch (NumberFormatException ex)
{
System.out.println("That is not a positive number!");
}
String input
for(int i = 0; i<input.length(); i++)
{
if(!Character.isLetter(input.charAt(i)))
{
System.out.println("This string does not contain only letters!");
break;
}
}
祝你好运
# 4 楼答案
要检查字符串中的字母,可以使用正则表达式,例如:
someString.matches("[A-F]");
为了检查数字和停止程序崩溃,我有一个非常简单的类,你可以在下面找到,在这里你可以定义你想要的值的范围。
Here
public int readInt(String prompt, int min, int max)
{
Scanner scan = new Scanner(System.in);
int number = 0;
//Run once and loop until the input is within the specified range.
do
{
//Print users message.
System.out.printf("\n%s > ", prompt);
//Prevent string input crashing the program.
while (!scan.hasNextInt())
{
System.out.printf("Input doesn't match specifications. Try again.");
System.out.printf("\n%s > ", prompt);
scan.next();
}
//Set the number.
number = scan.nextInt();
//If the number is outside range print an error message.
if (number < min || number > max)
System.out.printf("Input doesn't match specifications. Try again.");
} while (number < min || number > max);
return number;
}
# 5 楼答案
这里有一个最简单的方法
System.out.print("Please enter an integer: ");
while(!scan.hasNextInt()) scan.next();
int demoInt = scan.nextInt();
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 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
Scanner sc = new Scanner(System.in);
System.out.println("Give me a bunch of numbers in a line (or 'exit')");
while (!sc.hasNext("exit")) {
Scanner lineSc = new Scanner(sc.nextLine());
int sum = 0;
while (lineSc.hasNextInt()) {
sum += lineSc.nextInt();
}
System.out.println("Sum is " + sum);
}
下面是一个例子sessionon:
Give me a bunch of numbers in a line (or 'exit')
3 4 5 Sum is 12
10 100 a million dollar Sum is 110
wait what? Sum is 0
exit
# 1 楼答案
一个想法:
在commons-lang库中还有CharUtils类,该类提供方法
isAsciiNumeric()
来检查字符是否为数字,以及isAsciiAlpha()
来检查字符是否为字母# 2 楼答案
我尝试的是,首先我接受整数输入,检查它是否为负,如果为负,然后再次接受输入
在这里,您需要首先进行字符输入,并检查用户是否提供了字符,如果没有,则再次进行字符输入
# 3 楼答案
如果您正在从控制台或类似工具解析字符串数据,最好的方法是使用正则表达式。请在此处阅读更多相关信息: http://java.sun.com/developer/technicalArticles/releases/1.4regex/
否则,要从字符串中解析int,请尝试 Integer.parseInt(string)。如果字符串不是数字,则会出现异常。否则,您可以对该值执行检查,以确保它不是负值
要获得一个只包含字符的字符串,您最好在每个字符上循环检查数字,例如使用Character.isLetter(char)
祝你好运
# 4 楼答案
要检查字符串中的字母,可以使用正则表达式,例如:
为了检查数字和停止程序崩溃,我有一个非常简单的类,你可以在下面找到,在这里你可以定义你想要的值的范围。 Here
# 5 楼答案
这里有一个最简单的方法
# 6 楼答案
Scanner.hasNextXXX
方法概述^{} 有许多
hasNextXXX
方法可用于验证输入。以下是所有这些项目的简要概述:int
的标记李>Scanner
能够实现更多功能,这是因为它基于正则表达式。一个重要的特性是^{find
和skip
方法忽略分隔符下面的讨论将使正则表达式尽可能简单,因此重点仍然是
Scanner
示例1:验证正整数
下面是一个使用
hasNextInt()
验证输入的正int
的简单示例下面是一个示例会话:
注意} 组合更容易使用。根据合同,a
Scanner.hasNextInt()
比更详细的try/catch
{a17}/^{Scanner
保证如果它hasNextInt()
,那么nextInt()
将和平地给你那int
,并且将不会抛出任何NumberFormatException
/InputMismatchException
/NoSuchElementException
相关问题
示例2:同一令牌上的多个
hasNextXXX
请注意,上面的代码段包含一个
sc.next()
语句,用于将Scanner
推进到hasNextInt()
。重要的是要认识到,没有任何的hasNextXXX
方法会使Scanner
超越任何输入您会发现,如果从代码段中省略这一行,那么它将在无效输入上进入无限循环这有两个后果:
hasNextXXX
测试失败的“垃圾”输入,则需要以某种方式推进Scanner
(例如next()
、nextLine()
、skip
等)李>hasNextXXX
测试失败,您可以仍然测试,如果它可能hasNextYYY
李>下面是一个执行多个
hasNextXXX
测试的示例下面是一个示例会话:
请注意,测试的顺序很重要。如果一个},那么它也
Scanner
{hasNextLong()
,但不一定是相反的true
。通常情况下,您希望在更一般的测试之前进行更具体的测试示例3:验证元音
Scanner
有许多正则表达式支持的高级功能。下面是一个使用它验证元音的示例下面是一个示例会话:
在正则表达式中,作为Java字符串文本,模式
"[aeiou]"
被称为“字符类”;它匹配任何字母a
、e
、i
、o
、u
。注意,使上面的测试不区分大小写很简单:只需向Scanner
提供这样的正则表达式模式即可API链接
true
李>相关问题
参考文献
示例4:同时使用两个
Scanner
有时您需要逐行扫描,一行上有多个令牌。实现这一点的最简单方法是使用两个two
Scanner
,其中第二个Scanner
将第一个Scanner
中的nextLine()
作为输入。下面是一个例子:下面是一个例子sessionon:
除了^{} 构造函数之外,还有^{} 等
摘要
Scanner
提供了一组丰富的功能,例如hasNextXXX
验证方法李>hasNextXXX/nextXXX
意味着Scanner
永远不会抛出InputMismatchException
/NoSuchElementException
李>hasNextXXX
不会使Scanner
超过任何输入李>Scanner
。两个简单的Scanner
通常比一个过于复杂的Scanner
要好李>Scanner
参数的String pattern
方法都是基于正则表达式的。String
转换为文字模式的简单方法是^{