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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© gzgzgz159357 中级黑马   /  2016-9-19 09:50  /  1015 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

提示用户控制台输入一个手机号,校验用户输入的手机号是否合法,如不合法,提示用户重新输入,直至输入合法的手机号;随机生成一个对应的四位数验证码,将该手机号以及对应的验证码存入适合的集合中,遍历集合将集合中的所有元素输出到控制台上;

手机号的条件:

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

求各位大神指教

8 个回复

倒序浏览
chenyihan 来自手机 初级黑马 2016-9-19 10:42:04
沙发
先用字符串写出号码的规则,用正则表达式,然后用matcher来判断是否合法
回复 使用道具 举报
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));                          }                 }         } }
回复 使用道具 举报
第一次发,竟然这么乱~~抱歉
回复 使用道具 举报
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:09
import java.util.HashMap;
import java.util.Map;
import java.util.Random;

手机号码少了个你要求的4字段,自己加吧
回复 使用道具 举报
正则表达式
回复 使用道具 举报
"1[3578]\\d{9}"  简单的正则,然后符合条件的加入到集合之中,进行遍历输出,个人的思路.,,,,,,,,,,,,,,
回复 使用道具 举报
[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();
	}
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马