“腾讯公司在抽奖活动页面显示中奖QQ号时,为了保护中奖QQ号的安全,隐藏了部分信息,只显示QQ号的前2位和后2位,中间用与隐藏数字相同数量的代替,例如QQ号“513011705”显示为“51**05”,*“451728”显示为“4528”。*
请编程实现该功能,程序运行时输入实际QQ号,输出隐藏部分信息的QQ号。”
这道题主要用到了substring方法******
一下是代码,具体思路代码中有注释:
package JavaTest;
import java.util.*;
public class StringTest_1 {
static String qq;
static String ww;
char i='*';
int temp=0;
static int u;
public static void main(String[] args) {
// TODO Auto-generated method stub
int e;
Scanner scanner=new Scanner(System.in);
while(true) {
System.out.println("请输入你的QQ号(输入a退出):");
qq=scanner.next();
//如果输入的字符串为a就退出
if(qq.equals("a")) {
System.out.println("您已经退出!");
break;
}
u=qq.length()-4;//4为前后各两位数字,中间用隐藏,所以减去4
e=u+2;//这里加2是因为u是隐藏的号码长度,加上前面显示的2个号码,得到的就是后面两个数字的其实索引
//substring(0,2)返回号码前两个数字,substring(e)返回后面两个数字
System.out.println("隐藏信息后的QQ号是:"+qq.substring(0,2)+new StringTest_1().conceal()+qq.substring(e));
}
}
//该方法用于返回符号"*",隐藏一部分号码
public String conceal() {
ww="";
u=qq.length()-4;//4为前后各两位数字,中间用隐藏,所以减去4,这里重复了可以省略
//通过循环将*组成一个字符串,数量是输入的QQ号该省略号码的长度
while(temp<u) {
ww=ww+i;//组成一定长度的“*”符号字符串
temp++;
}
return ww;
}
}
代码运行结果如下: