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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 怀念子龙 中级黑马   /  2015-4-11 10:46  /  811 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

写一个正则表达式,    判断一个两位数   如“11”,“21”  ,若两个数字相同则返回false   ,不同则返回true,
比如“11”则返回false,“21”则返回true  。
请不要用!false=true 这种做法。

11 个回复

倒序浏览
if(!String.matches(".\\1"))
回复 使用道具 举报
应该是这样,使用到  组与叠词 的概念
回复 使用道具 举报
写错了,if(!String.matches("(.)\\1")) ,如果是判断多个就是 if(!String.matches("(.)\\1+"))
回复 使用道具 举报
我也在求答案啊
回复 使用道具 举报
liaohongjie 发表于 2015-4-11 10:56
if(!String.matches(".\\1"))

我已经注明了不能用!false=true 这种做法, 因为这是我从另一个题目中单独抽取出来的一个关键问题。如果用!的话就不能用在那个题目中了。
回复 使用道具 举报
匹配是否相同,就该用match,。你说的  !false=true,应该是不要直接判断第一位是否和第二位相同。
回复 使用道具 举报
Pattern.compile("(\\d)\\1")
回复 使用道具 举报
本帖最后由 wkz_crystal 于 2015-4-11 20:34 编辑

晕倒,相同返回false,不同返回true,还真是有点难呢?自己写一个类继承Pattern类算了,然后覆写掉mathches(参数1,参数2);的方法……
让其相同返回false,不同返回true就好!其他方法没有想到!
回复 使用道具 举报
本帖最后由 wkz_crystal 于 2015-4-11 20:56 编辑

哥们:突然我想到了用三元运算符的方式就能over了!
请看代码:我写了一个具体的例子:
  1. import java.util.regex.*;
  2. class WkzTestDemo
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                 ifSame(66);
  7.         }

  8.         public static void ifSame(int number)
  9.         {
  10.                 //把数字装换成为字符串,方便主体内容的判断
  11.                 String str=String.valueOf(number);

  12.                 //按照要求需要判断的正则表达式方法:
  13.                 String reg="^(\\d)\\1{1}$";

  14.                 if (number>0 && str.length()!=2)
  15.                 {
  16.                         System.out.println("请输入位数为:两位数的正整数!");
  17.                 }else
  18.                 {
  19.                         //这里用了三元运算符进行判断如果是相同,返回假,如果是假,返回真!
  20.                         boolean flag=Pattern.matches(reg,str)?false:true;
  21.                         //做判断提示用的!
  22.                         if (flag==false)
  23.                         {
  24.                                 System.out.println("这个数字:"+number+" 其位数上的值是相同的!");
  25.                         }else
  26.                         {
  27.                                 System.out.println("这个数字:"+number+" 其位数上的值是不相同的!");
  28.                         }
  29.                 }
  30.         }
  31. }
复制代码



回复 使用道具 举报
sisel 中级黑马 2015-4-11 21:45:12
11#
Pattern p=Pattern.compile("(\\d)\\1{1}");p.matches(字符串)
回复 使用道具 举报
上面已经有答案了,最好用正则引擎
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马