PC键盘输入的常见问题分析
1 普通输入方法
在Java中,大多数时候需要有键盘输入指令,计算机根据指令来执行不同的功能。那么怎么让程序指导用户所输入的指令呢?就要用到Scanner类了!
Scanner类的执行顺序如下:
- 先导入输入类
- 创建输入类对象
- 调用对象方法,赋值给x
- 关闭输入
参考程序如下:
1 import java.util.Scanner;//第一步 2 public class Q{ 3 public sattic void main(String[] args){ 4 Scanner input=new Scanner(System.in);//第二步 5 System.out.println("请输入一个数"); 6 int x=input.nextIne();//第三步 7 input.close;//第四步 8 System.out.println(x); 9 } 10 }
【注】系统根据input的方法,有不同的扫描方式和返回值
nextInt(); 将输入信息的下一表及扫描为一个int
nextLine(); 扫描当前行,并返回跳过的输入信息,类型为String
除此之外,可有next+Byte/Double/Float/Long/Short等返回对应的数值类型值
更多信息请查看java API中的Scanner类Java API
1.1 扩展一:多行输入的方法
上面的方法我们已经可以输入一行字符串了,但是如果是输入一篇文章呢?
让每一行字符连接至上一字符串,在连接之前判断改行字符串是否为空,若不为空,连接,若为空,则退出。
参考代码如下:
1 import java.util.Scanner; 2 public class Q{ 3 public static void main(String[] args){ 4 String a=""; 5 Scanner input=new Scanner(System.in); 6 System.out.println("请输入字符串"); 7 do{ 8 String string=input.nextLine(); 9 if(string.equals(""))//如果是空字符 10 break;//退出循环 11 a+=string;//否则,连接字符串 12 }while(true); 13 input.close; 14 System.out.println(a); 15 //在此之后,可使用toCharArray方法转换成字符数组,方便处理 16 } 17 }
1.2 扩展二:输入指定字符(异常处理)
为防止异常发生,有时候我们需要控制用户所输入的字符。比如下例中,我想让用户输入1或2,而输入其它字符的时候,我需要提醒他错误,让它重新输入,这时候while循环就派上用场了。
参考代码如下:
1 import java.util.Scanner; 2 public class Q{ 3 public static void main(String[] args){ 4 Scanner input=new Scanner(System.in); 5 System.out.println("请输入数字0或1"); 6 int a=input.nextInt(); 7 while(a!=1&&a!=2){//如果不是数字1或2 8 System.out.println("输入错误,请重新输入数字0或1");//提醒错误 9 int a=input.nextInt();//重新赋值 10 } 11 input.close; 12 System.out.println(a); 13 } 14 }
如果需要修改,只需在while循环条件中控制其条件即可。
2 判断字符串是否为数字的办法
2.1 用regex包中的matches方法
- 导入包java.util.regex。
- 定义一个String类的字符串a。
- 使用a.matches("\\d+"),如果为数字型字符串,则返回true,否则为false。
- 使用数字时,可使用Integer.parseInt(a)转换为int型数据。
2.2 用Java自带的函数
1 public static booleanisNumeric(String str){ 2 for(int i=str.length();--i>=0){ 3 if(!Character.isDigit(str.charAt(i))){ 4 return false; 5 } 6 } 7 return true; 8 }
2.3 用正则表达式
1 public static booleanisNumeric(String str){ 2 Pattern pattern=Pattern.compile("[0-9]*"); 3 return pattern.macher(str).matcher(); 4 }
2.4 用ASCII码
1 public static booleanisNumeric(String str){ 2 for(int i=str.length();--i>=0){ 3 int chr=str.charAt(i); 4 if(chr<48||chr>57){ 5 return false; 6 } 7 } 8 return true; 9 }
作者:祁俊辉
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。