• 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 }
  • 相关阅读:
    验证一下spark Row getAS类型以及控制问题
    Spark异常处理有时间好好拜读一下,spark拍错好文章
    Hive SQL 报错
    Objenesis类库学习一下,没有符合的构造器也可以创建对象
    Scala可变参数方法或者函数传参问题
    大数据相关英文博客,感觉还不错。Mark一下http://dwgeek.com/
    Tomcat 7 'javax.el.ELException' 的解决方式(failed to parse the expression [${xxx}])
    The absolute uri: http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or the jar
    在Tomcat中进行数据池连接是所需的包
    EL表达式
  • 原文地址:https://www.cnblogs.com/qijunhui/p/8284334.html
Copyright © 2020-2023  润新知