黑马程序员技术交流社区

标题: 点求指教招题 [打印本页]

作者: gzgzgz159357    时间: 2016-9-19 09:50
标题: 点求指教招题
提示用户控制台输入一个手机号,校验用户输入的手机号是否合法,如不合法,提示用户重新输入,直至输入合法的手机号;随机生成一个对应的四位数验证码,将该手机号以及对应的验证码存入适合的集合中,遍历集合将集合中的所有元素输出到控制台上;

手机号的条件:

手机号必须11位
第一位必须是1
第二位必须是 3或者4或者5或者7或者8
后面9位是0-9

求各位大神指教
作者: chenyihan    时间: 2016-9-19 10:42
先用字符串写出号码的规则,用正则表达式,然后用matcher来判断是否合法
作者: zjy9399    时间: 2016-9-19 18:06
import java.util.HashMap; import java.util.Map; import java.util.Random; import java.util.Scanner; import java.util.Set;  /* *提示用户控制台输入一个手机号,校验用户输入的手机号是否合法,如不合法,提示用户重新输入,直至输入合法的手机号;随机生成一个对应的四位数*1000-9999  验证码,将该手机号以及对应的验证码存入适合的集合中,遍历集合将集合中的所有元素输出到控制台上; */  public class IODemo {         public static void main(String[] args) {                 // 创建键盘录入对象                 Scanner sc = new Scanner(System.in);                 // 创建随机数对象                 Random rd = new Random();                 // 创建Map集合,以键值方式存储                 Map<String, Integer> map = new HashMap<>();                 while (true) {                         System.out.println("请输入一个手机号:");                         String phoneNum = sc.next();                         // 通过正则表达式进行手机号码判断                         String regex = "^1[3578]\\d{9}";                         if (phoneNum.matches(regex)) {                                 // 对应的手机号码产生对应的随机数存储到集合中                                 int num = rd.nextInt(9999) + 1000;                                 map.put(phoneNum, num);                         } else {                                 System.out.println("手机号不合法,请重新输入!");                         }                         // 获取所有键的集合                         Set<String> keys = map.keySet();                         //遍历集合                         for (String k : keys) {                                 // 通过键取值打印出手机号码与对应的验证码                                 System.out.println("手机号码" + k + "的验证码是:" + map.get(k));                          }                 }         } }
作者: zjy9399    时间: 2016-9-19 18:07
第一次发,竟然这么乱~~抱歉
作者: zjy9399    时间: 2016-9-19 18:09
import java.util.HashMap;
import java.util.Map;
import java.util.Random;
import java.util.Scanner;
import java.util.Set;

/*
*提示用户控制台输入一个手机号,校验用户输入的手机号是否合法,如不合法,提示用户重新输入,直至输入合法的手机号;随机生成一个对应的四位数*1000-9999

验证码,将该手机号以及对应的验证码存入适合的集合中,遍历集合将集合中的所有元素输出到控制台上;
*/

public class IODemo {
        public static void main(String[] args) {
                // 创建键盘录入对象
                Scanner sc = new Scanner(System.in);
                // 创建随机数对象
                Random rd = new Random();
                // 创建Map集合,以键值方式存储
                Map<String, Integer> map = new HashMap<>();
                while (true) {
                        System.out.println("请输入一个手机号:");
                        String phoneNum = sc.next();
                        // 通过正则表达式进行手机号码判断
                        String regex = "^1[3578]\\d{9}";
                        if (phoneNum.matches(regex)) {
                                // 对应的手机号码产生对应的随机数存储到集合中
                                int num = rd.nextInt(9999) + 1000;
                                map.put(phoneNum, num);
                        } else {
                                System.out.println("手机号不合法,请重新输入!");
                        }
                        // 获取所有键的集合
                        Set<String> keys = map.keySet();
                        //遍历集合
                        for (String k : keys) {
                                // 通过键取值打印出手机号码与对应的验证码
                                System.out.println("手机号码" + k + "的验证码是:" + map.get(k));

                        }
                }
        }
}
[Java] 纯文本查看 复制代码

作者: zjy9399    时间: 2016-9-19 18:16
zjy9399 发表于 2016-9-19 18:09
import java.util.HashMap;
import java.util.Map;
import java.util.Random;

手机号码少了个你要求的4字段,自己加吧
作者: wo1026756529    时间: 2016-9-19 23:28
正则表达式
作者: Array先生    时间: 2016-9-20 06:32
"1[3578]\\d{9}"  简单的正则,然后符合条件的加入到集合之中,进行遍历输出,个人的思路.,,,,,,,,,,,,,,
作者: litianji2016    时间: 2016-9-20 13:51
[Java] 纯文本查看 复制代码
package com.test;

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import java.util.regex.Pattern;

public class Test {

        public static void main(String[] args) {
                String phoneNum=input();
                String code=getCode();
                Map<String,String> map=new HashMap<String,String>();
                map.put(phoneNum, code);
                for (Map.Entry<String, String> e : map.entrySet()) {
                        System.out.println("电话号:"+e.getKey()+"\t"+"验证码:"+e.getValue());
                }
        }

        public static String input() {
                String str = "^1[34578]{1}[0-9]{9}$";
                Pattern p = Pattern.compile(str);
                Scanner sc = new Scanner(System.in);
                System.out.print("请输入手机号:");
                while (true) {
                        String phoneNum = sc.next();
                        if (p.matcher(phoneNum).matches()) {
                                return phoneNum;
                        } else {
                                System.out.println("手机号码不会合法!");
                                System.out.print("请输入手机号:");
                        }
                }

        }

        public static String getCode() {
                StringBuffer bu = new StringBuffer();
                for (int i = 0; i < 4; i++) {
                        bu.append((int) (Math.random() * 10));
                }
                return bu.toString();
        }
}





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