1. 检查社保号码
思路:1. 首先判断长度是否满足要求 2. 其次号码的3 和 6位置是否为 - 3. 判断三段数字是否满足要求
package day03;
//判断格式 DDD-DD-DDDD
import java.util.Scanner;
public class Class21 {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.println("Enter a SSN:");
String ssn=scanner.nextLine();
CheckSSN cs=new CheckSSN(ssn);
System.out.println(cs.isFormat());
}
}
class CheckSSN{
private String ssn;
public CheckSSN(String ssn){
this.ssn=ssn;
}
public boolean isFormat(){
//1.判断长度
if(ssn.length()!=11){
return false;
}
//2.判断分隔符- index=3 6
if(ssn.charAt(3)!='-'&&ssn.charAt(6)!='-'){
return false;
}
//3.判断三个部分的数字
//0-2 4-5 7-10
String s1=ssn.substring(0,3); //substring 截取指定长度字符串
String s2=ssn.substring(4,6);
String s3=ssn.substring(7,11);
return isNumber(s1)&&isNumber(s2)&&isNumber(s3);
}
private boolean isNumber(String s){
for (int i = 0; i < s.length(); i++) {
if(!Character.isDigit(s.charAt(i))){ //判断是否数字
return false;
}
}
return true;
}
}
2. 检验密码
思路:1.判断长度 2. 判断是不是只包含字母数字 3. 密码至少包含两个数字
package day03;
//判断密码是否有效
import java.util.Scanner;
public class Class27 {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.print("请输入密码:");
String password=scanner.nextLine();
CheckPassword cp=new CheckPassword(password);
System.out.println(cp.isChecked());
}
}
class CheckPassword{
private String password;
public CheckPassword(String password){
this.password=password;
}
public boolean isChecked(){
//1.长度 isLength()
//2.组成isAlpha()
//3.数字个数isNUmber()
return isLength()&&isAlpha()&&isNumber();
}
private boolean isLength(){
return password.length()>=8;
}
private boolean isAlpha(){
for (int i = 0; i < password.length(); i++) {
char c=password.charAt(i);
if(!(Character.isLetter(c)||Character.isDigit(c))){
return false;
}
}
return true;
}
private boolean isNumber(){
int count=0;
for (int i = 0; i < password.length(); i++) {
char c=password.charAt(i); //获取密码字符
if(Character.isDigit(c)){ //判断是否为数字
count++;
}
}
return count>=2;
}
}
3. 猜字游戏
package day03;
import java.util.Random;
import java.util.Scanner;
public class Class34 {
public static void main(String[] args) {
String [] words={"nike","champion","converse","jordan","vans"}; //定义单词数组
WordGame wg=new WordGame(words);
wg.startGame();
}
}
class WordGame{
private String[] words; //用户传入的单词表
private String word; //当前正在猜测的单词
private boolean[] states; //当前单词的密文状态
private Random random;
private int missCount=0;
Scanner sc=new Scanner(System.in);
public WordGame(String[] words){
this.words=words;
this.random=new Random();
}
public void startGame(){
while(true){
//1.随机产生一个单词
word=words[random.nextInt(words.length)];
//2.创建该单词的密文状态表
states=new boolean[word.length()];
//3.根据密文状态 生成提示单词
while(!isGameOver()){
String str=getWord();
System.out.print("Enter a letter in word "+str+":");
String ch=sc.nextLine();
if(word.contains(ch)){
//改变密文状态
changeStates(ch);
}else{
System.out.println(ch+" is not in the word");
missCount++; //错误次数
}
}
System.out.println("The word is "+word+".You missed "+missCount+" time");
System.out.print("Do you want to guess another word?Enter y or n:");
String choice=sc.nextLine();
if(choice.equals("y")){ //继续或者结束游戏
missCount=0;
continue;
}else{
break;
}
}
}
private boolean isGameOver(){ //判断游戏是否结束
for(int i=0;i<states.length;i++){
if(states[i]==false){
return false;
}
}
return true;
}
private void changeStates(String ch){ //改变密文状态
for(int i=0;i<word.length();i++){
if(ch.equals(word.charAt(i)+"")){
if(states[i]==true){
System.out.println(ch+" is already in the word");
return;
}else{
states[i]=true;
}
}
}
}
private String getWord(){
String str="";
for(int i=0;i<states.length;i++){
if(states[i]){
str+=word.charAt(i);
}else{
str+="*";
}
}
return str;
}
}