我正在接受用户的输入,它应该只是字符串,但代码不能按我的预期工作。这是我的代码`
while(true){
try{
System.out.print("Enter test string");
str=sc.nextLine();
break;
}
catch(InputMismatchException e) {
System.out.println("Please enter String value");
continue;
}
}
System.out.println(str);
`
如果我给出的整数值应该再次询问,但这里是打印整数值。也没有特殊字符
答案 0 :(得分:1)
如果你试图直接解析整数,那么你会得到一个更有意义的异常来捕获。
N = 1/2
M = 5
x1 = seq(0, 1, by = N)
df = data.frame(x1)
for(i in 1:(M-2)){
x_next = sapply(rowSums(df), function(x){seq(0, 1-x, by = N)})
df = data.frame(sapply(df, rep, sapply(x_next,length)))
df = cbind(df, unlist(x_next))
}
x_next = sapply(rowSums(df), function(x){1-x})
df = sapply(df, rep, sapply(x_next,length))
df = data.frame(df)
df = cbind(df, unlist(x_next))
> df
x1 unlist.x_next. unlist.x_next..1 unlist.x_next..2 unlist(x_next)
1 0.0 0.0 0.0 0.0 1.0
2 0.0 0.0 0.0 0.5 0.5
3 0.0 0.0 0.0 1.0 0.0
4 0.0 0.0 0.5 0.0 0.5
5 0.0 0.0 0.5 0.5 0.0
6 0.0 0.0 1.0 0.0 0.0
7 0.0 0.5 0.0 0.0 0.5
8 0.0 0.5 0.0 0.5 0.0
9 0.0 0.5 0.5 0.0 0.0
10 0.0 1.0 0.0 0.0 0.0
11 0.5 0.0 0.0 0.0 0.5
12 0.5 0.0 0.0 0.5 0.0
13 0.5 0.0 0.5 0.0 0.0
14 0.5 0.5 0.0 0.0 0.0
15 1.0 0.0 0.0 0.0 0.0
答案 1 :(得分:0)
检查字符串是否不是这样的数字:
while(true){
try{
System.out.print("Enter test string");
str=sc.nextLine();
if(isNumeric(str)) {
continue;
}
break;
}
catch(InputMismatchException e) {
System.out.println("Please enter String value");
continue;
}
}
System.out.println(str);
}
public static boolean isNumeric(String str)
{
for (char c : str.toCharArray())
{
if (!Character.isDigit(c)) return false;
}
return true;
}
答案 2 :(得分:0)
如果您只是想检查字符串是否不是数字,可以尝试
String str = sc.nextLine();
if (StringUtils.isNumeric(str))
System.out.println(str);
但如果您的号码有小数或其他内容,则此方法无效。
检查How to check if a String is numeric in Java
获得类似答案
答案 3 :(得分:-1)
str=sc.nextLine();
将所有内容都作为字符串,因此没有异常。尝试使用像这样的语句
int num;
&
num=sc.nextInt();
你会发现异常会被捕获,所以代码没有问题。
假设用户将输入"This is 1 String"
,即使它包含整数但仍然是一个字符串。即使用户输入"43728"
它仍被视为字符串
以下是如何实现目标
while(true){
System.out.print("Enter test string");
str=sc.nextLine();
Pattern pattern = Pattern.compile("\\d");
Matcher matcher = pattern.matcher(str);
if (matcher.find()) {
//System.out.println(matcher.group(0));
continue;
}
break;
}