PC键盘输入的常见问题分析

1  普通输入方法

在Java中,大多数时候需要有键盘输入指令,计算机根据指令来执行不同的功能。那么怎么让程序指导用户所输入的指令呢?就要用到Scanner类了!

Scanner类的执行顺序如下:

  1. 先导入输入类
  2. 创建输入类对象
  3. 调用对象方法,赋值给x
  4. 关闭输入

参考程序如下:

 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方法

  1. 导入包java.util.regex
  2. 定义一个String类的字符串a。
  3. 使用a.matches("\\d+"),如果为数字型字符串,则返回true,否则为false。
  4. 使用数字时,可使用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 false6         }
7     }
8     return true;
9 }
posted @ 2018-01-14 20:59  祁俊辉  阅读(267)  评论(0编辑  收藏  举报