A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 silencelj 于 2015-4-13 21:00 编辑
  1.         /*
  2.                 需求:1.定义一个手机:有发信息的功能,输入手号后可以显示”发送信息“
  3.                                 手机号符合规定则显示发送成功,否则显示发送失败请核对手机号码
  4.                           2.手机号码是11位数,从键盘获取电话号。

  5.                 在通常情况下数据正确返回大于0的数,数据错误返回-1的数
  6.         */
  7.         
  8. import java.util.Scanner;

  9. class PhoneDemo
  10. {
  11.         public static void main(String[] args)
  12.         {
  13.                
  14.                 Phone p = new Phone();
  15.                 //重键盘获取手机号码
  16.                 Scanner scanner = new Scanner(System.in);
  17.                 System.out.println("请输入电话号码(11位)");
  18.                 int number = scanner.nextInt();

  19.                 //根据输入的号码是否正确来调用发信息功能
  20.                 int result = p.sendMessage(number);

  21.                 //电话号正确则显示电话号码和发送成功,否则发送失败
  22.                 if(result>0){
  23.                         System.out.println("给:"+result + "发送成功");
  24.                 }else{
  25.                         System.out.println("发送失败请核对手机号码");
  26.                 }
  27.         }
  28.         
  29. }
  30. //定义手机
  31. class Phone
  32. {
  33.         int number;
  34.          void setNumber(int number)
  35.         {
  36.                 this.number = number;
  37.         }
  38.          int getNumber()
  39.         {
  40.                 return number;
  41.         }
  42.         //发信息
  43.          int sendMessage(int number)
  44.         {               

  45.                     System.out.println("正在发短信");

  46.                         try{new Thread().sleep(2000);}catch(Exception e){}

  47.                         //将获取的电话号转为String类型,
  48.                         String str = String.valueOf(number);

  49.                         //正则表达式匹配手机1(3、4、5、8)XXXXXXXXX
  50.                         String regex = "[1][3458][0-9]{9}";

  51.                         //用正则表达式进行手机号码的匹配得到结果
  52.             boolean result =str.matches(regex);

  53.                         //如果号码符合要求则返回1,否则返回-1
  54.                      if(result)
  55.                         {
  56.                                 return 1;
  57.                         }
  58.                         else
  59.                         {
  60.                                 return -1;
  61.                         }
  62.         }
  63. }
  64. /*

  65. 当输入的手机号小于10的时,编译运行可以
  66. 请输入电话号码(11位)
  67. 1234567899
  68. 正在发短信
  69. 发送失败

  70. 当输入手机号为11时,运行出现如下异常
  71. 请输入电话号码(11位)
  72. 13255545457
  73. Exception in thread "main" java.util.InputMismatchException: For input string: "
  74. 13255545457"
  75.         at java.util.Scanner.nextInt(Scanner.java:2097)
  76.         at java.util.Scanner.nextInt(Scanner.java:2050)
  77.         at PhoneDemo.main(PhoneDemo.java:16)

  78. 求解释??????????????????????或者有其他的方法实现功能也可以
  79. */
复制代码


5 个回复

倒序浏览
学习中,希望有答案
回复 使用道具 举报
首先你你输入的字符串 转换成字符数组。
然后用if 语句判断 是不是11位的手机号
回复 使用道具 举报
顶一下,刚学看的不是太懂
回复 使用道具 举报
于先森 发表于 2015-4-13 20:22
首先你你输入的字符串 转换成字符数组。
然后用if 语句判断 是不是11位的手机号 ...

我键盘输入的是int类型的,然后转成字符串的,电话号我是想用正则表达式匹配来的!
回复 使用道具 举报
silencelj 发表于 2015-4-13 20:59
我键盘输入的是int类型的,然后转成字符串的,电话号我是想用正则表达式匹配来的! ...

别用INT 可以使用INTEGER
我们从前台接受的数据都是字符串类型的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马