import java.util.Scanner;
public class SwitchPractice
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
int day;
System.out.println("请输入一个1~7的整数");
day = input.nextInt();
switch(day)
{
case 1:
System.out.println("星期一");
break;
case 2:
System.out.println("星期二");
break;
case 3:
System.out.println("星期三");
break;
case 4:
System.out.println("星期四");
break;
case 5:
System.out.println("星期五");
break;
case 6:
System.out.println("星期六");
break;
case 7:
System.out.println("星期日");
break;
default:
System.out.println("输入错误"); }
}
}在DOS下如果我输入的是空格回车后会没有任何反映。如何判断它是个空格呢?这个day是个整型的。怎么办?先不计是不是1~7的。我就在想如何让他认识空格?谢谢了!!
//用JAVA自带的函数
public static boolean isNumeric(String str){
for (int i = str.length();--i>=0;){
if (!Character.isDigit(str.charAt(i))){
return false;
}
}
return true;
} //用正则表达式
public static boolean isNumeric(String str){
Pattern pattern = Pattern.compile("[0-9]*");
return pattern.matcher(str).matches();
} //用ascii码
public static boolean isNumeric(String str){
for(int i=str.length();--i>=0;){
int chr=str.charAt(i);
if(chr<48 || chr>57)
return false;
}
return true;
}
你这个已经限定了输入整数。所以空格肯定没有反应。
String temp = input.nextLine();
if(temp.equals(" ")){
System.out.println("请重新输入!");
temp = input.nextLine();
}else
day = Integer.parseInt(temp);
要解决这个问题,首先你要知道Scanner这个类的用法。这个类当你输入的是空格或者回车的时候就表示你的输入已经结束了。你可以写一个测试的方法测试一下当你输入“a a”的时候,打印的只有“a”;
所以为了解决这个问题只有用BuifferReader br = new BfferReader(new InputStream(System.in));这样你输入的空格就可以显示了。
System.out.println(input.next());这里的delimiter不能是空格(三个空格相连无法分辨算是有几个delimiter), java.util.InputMismatchException