我必须制作一个程序,通过使用String
来判断我在键盘中输入的switch
是否为数字。我知道如何通过try和catch来做到这一点,但我不知道如何使用switch
来做到这一点。
任何提示?
答案 0 :(得分:4)
您需要检查String
中的每个字符。这样的事情可能会奏效。
static boolean isNumber(String s) {
if (s == null) {
// Debatable.
return false;
}
int decimalCount = 0;
for (int i = 0; i < s.length(); i++) {
switch (s.charAt(i)) {
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
// These are all allowed.
break;
case '.':
if (i == 0 || decimalCount > 0) {
// Only allow one decimal in the number and not at the start.
return false;
}
decimalCount += 1;
break;
default:
// Everything else not allowed.
return false;
}
}
return true;
}
答案 1 :(得分:3)
在Java7之前,您可以使用switch(String)
语句。
但是在这里你有足够的switch(int)
和一点解决方法:
public static void main(String[] args) throws Exception {
String a = "2";
switch (Integer.parseInt(a)) {
default:
System.out.print("is a number");
break;
}
}
答案 2 :(得分:0)
这是我向一些同学询问并安静思考的解决方案。
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner entry = new Scanner(System.in);
String myNumber;
int tf;
myNumber = entry.next();
try {
Double.parseDouble(myNumber);
tf = 1;
}
catch (Exception e) {
tf = 0;
}
switch(tf) {
case 1:
System.out.println("Is a number");
break;
default:
System.out.println("No es un número");
break;
}
}
感谢社区非常好!
答案 3 :(得分:0)
我提出了一个更短的代码,但它使用了正则表达式,如果Halo刚刚开始使用Java,他可能还没有看过那个话题。但是它也回答了这个问题,所以它是:
Scanner scanner = new Scanner(System.in);
String expression = scanner.nextLine();
String matches = new Boolean(expression.matches("\\d+")).toString();
switch (matches) {
case "true":
System.out.println("IT'S a number");
break;
case "false":
System.out.println("NOT a number");
}
scanner.close();