我对我的计划有疑问。我试图找出,我怎么能检查用户的s.nextLine()输入是否只保存1到49的整数或字母。 我知道“eingabe”是一个字符串所以我不能只使用一个if吧?
我的问题是,我在java编程方面相对较新,我不知道解决方案。 :/ 也许你可以帮助我,这将是伟大的!
public static int Scanner() {
Scanner s = new Scanner(System.in);
String eingabe = s.nextLine();
//???
return eingabe;
}
答案 0 :(得分:1)
import java.util.Scanner;
import java.util.regex.Pattern;
import java.util.regex.Matcher;
class MyClass {
public static void main (String[] args) {
try {
int x = Scanner();
if(x >= 1 && x <= 49) {
System.out.println("Yes");
}
else {
System.out.println("No");
}
}
catch(java.lang.NumberFormatException e) {
System.out.println(e);
}
//Second Method Using Regex.
try {
int x = useRegex();
if(x >= 1 && x <= 49) {
System.out.println("Yes");
}
else {
System.out.println("No");
}
} catch(java.lang.NumberFormatException e) {
System.out.println(e);
}
}
public static int Scanner() {
Scanner s = new Scanner(System.in);
String eingabe = s.nextLine();
return Integer.parseInt(eingabe);
}
public static int useRegex() {
Scanner s2 = new Scanner(System.in);
String eingabe = s2.nextLine();
Pattern p = Pattern.compile("^[\\+-]?\\d+$");
Matcher m = p.matcher(eingabe);
boolean b = m.matches();
if(b) {
return Integer.parseInt(eingabe);
}
else {
throw new java.lang.NumberFormatException();
}
}
}
这里我使用try catch块来处理输入格式是否错误。如果它是错误的那么异常
java.lang.NumberFormatException
将发生,然后如果它是有效数字,那么我正在检查它是否在1到49之间。Integer.parseInt(num)用于将String转换为数字。 https://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html#parseInt(java.lang.String)。 try catch用于处理异常而不用。 See here
通过使用正则表达式,我也提到过。 See this for regex