黑马程序员技术交流社区

标题: 有什么好的方法可以判断键盘输入的是一个数字? [打印本页]

作者: 幸福的彼岸    时间: 2014-1-14 09:52
标题: 有什么好的方法可以判断键盘输入的是一个数字?
本帖最后由 幸福的彼岸 于 2014-1-14 14:57 编辑

有什么好的方法可以判断键盘输入的是一个数字?即输入的字符串可以转换成数字,这个字符串里不包含数字外的别的字符。
作者: 浮出一个美    时间: 2014-1-14 10:01
遍历字符串toCharArray()后转成的字符数组
然后用ascii
作者: 念~    时间: 2014-1-14 10:31
监听键盘上有键按下的事件,然后判断按下的这个键相应的ASCII码值,是否是在0~9对应的码值,就可以了,
作者: tuanjie    时间: 2014-1-14 10:38
把键盘输入的值,用正则表达式判断就可以了
  1. import java.io.BufferedReader;
  2. import java.io.BufferedWriter;
  3. import java.io.IOException;
  4. import java.io.InputStreamReader;
  5. import java.io.OutputStreamWriter;

  6. public class SystemIn {
  7.         public static void main(String[] args) throws IOException{
  8.                 //标准键盘输入
  9.                 BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  10.                 //标准键盘输出
  11.                 BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
  12.                 //存放键盘输入的内容
  13.                 String str = null;
  14.                
  15.                 str = br.readLine();
  16.                 //使用正则表达式判断输入的是不是数字
  17.                 if(str.matches("\\d+")){
  18.                         bw.write(str + "是数字");
  19.                        
  20.                 }else{
  21.                    bw.write(str + "不是数字");
  22.                 }
  23.                 //换行
  24.                 bw.newLine();
  25.                 //刷新缓冲区
  26.                 bw.flush();
  27.                
  28.                 br.close();
  29.                 bw.close();
  30.         }
  31.        
  32. }
复制代码



作者: -淡然一笑    时间: 2014-1-14 11:29
本帖最后由 -淡然一笑 于 2014-1-14 11:32 编辑

有两种方式
1.一种是每键入一个就判断一次每一个字母或数字都有1个ASCII码的值,根据ASCII表找到对应的值然后判断其输入的是否在这个范围内
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)//textBox1的按下某件后释放的事件
{
    //当输入的不是回车键 删除键 数字的时候就取消     Char.IsNumber是判定输入的是否是数值 e.KeyChar 是判定输入的键值
    if (!(Char.IsNumber(e.KeyChar)) && e.KeyChar != (char)8&& e.KeyChar != (char)13)
    {
        e.Handled = true;//取消刚刚的输入
        MessageBox.Show("请输入数字");
    }
}

2.一种是输入完后再判断。
string input = Console.ReadLine();
int number = 0;
if (int.TryParse(input,out number))
{                       
          Console.Write(number);
}
else{                
           Console.Write("请输入数字");
}










作者: 幸福的彼岸    时间: 2014-1-14 14:53
-淡然一笑 发表于 2014-1-14 11:29
有两种方式
1.一种是每键入一个就判断一次每一个字母或数字都有1个ASCII码的值,根据ASCII表找到对应的值然 ...

嗯,想找个比较好的,封装成方法,以后要经常用的
作者: 幸福的彼岸    时间: 2014-1-14 14:57
念~ 发表于 2014-1-14 10:31
监听键盘上有键按下的事件,然后判断按下的这个键相应的ASCII码值,是否是在0~9对应的码值,就可以了, ...

大家看下我这样处理对吗?
  1. while (!double.TryParse(Console.ReadLine(), out chinese))
  2.             {
  3.                 Console.WriteLine("你输入的不正确,请重新输入,输入完成按Enter结束");
  4.             }
复制代码





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2