String经典例题(基于面向对象思想)

在这里插入图片描述

import java.util.*;
import java.lang.*;
class Class21{
    public static void main(String[] args){
        Scanner scanner=new Scanner(System.in);
        System.out.print("Enter a SSN:");//提示用户输入号码
        String SSN=scanner.nextLine();
        CheckSSN cs=new CheckSSN(SSN);//创建一个测试号码对象
        if(cs.isCheckSSN(SSN)){
            System.out.println(SSN+" is a valid social security number");
        }else{
            System.out.println(SSN+" is an invalid social security number");
        }
    }
}
class CheckSSN{
    private String ssn;//定义一个字符串成员变量表示号码
    CheckSSN(String ssn){//定义构造方法 传入一个字符串
        this.ssn=ssn;
    }
    public boolean isCheckSSN(String ssn){//定义方法测试号码格式是否正确
        return islength(ssn)&&isformat(ssn);
    }
    public boolean islength(String ssn){//定义方法测试号码长度是否正确
        return ssn.length()==11;
    }
    public boolean isformat(String ssn){//定义方法测试号码所包含的内容是否正确
        String s1=ssn.substring(0,3);
        String s2=ssn.substring(4,6);
        String s3=ssn.substring(7,11);
        if(ssn.charAt(3)!='-'&&ssn.charAt(6)!='-'){
            return false;
        }
        if(!isnumber(s1)&&!isnumber(s2)&&!isnumber(s3)){
            return false;
        }
        return true;
    }
    public boolean isnumber(String ssn){//定义方法看传入的字符串是否是数字
        for(int i=0;i<ssn.length();i++){
            if(!Character.isDigit(ssn.charAt(i))){
                return false;
            }
        }
        return true;
    } 
}

在这里插入图片描述

import java.util.*;
class Class24{
    public static void main(String[] args){
        Scanner scanner=new Scanner(System.in);
        System.out.print("Enter the first string:");//提示用户输入第一个字符串
        String s1=scanner.nextLine();
        System.out.print("Enter the second string:");//提示用户输入第二个字符串
        String s2=scanner.nextLine();
        CommonPrefix cp=new CommonPrefix(s1,s2);//创建共同前缀对象 并传入两个字符串
        System.out.println(cp.Getcommonprefix(s1,s2));//该对象调用获取最长共同前缀方法
    }
}
class CommonPrefix{
    private String s1;//定义一个成员变量表第一个字符串
    private String s2;//定义一个成员变量表第二个字符串
    public CommonPrefix(String s1,String s2){//定义构造方法 传入两个字符串
        this.s1=s1;
        this.s2=s2;
    }
    public String Getcommonprefix(String s1,String s2){//定义方法 获取两个字符串的最长共同前缀
        String prefix="";
        for(int i=0;i<Math.min(s1.length(),s2.length());i++){
            if(s1.charAt(i)==s2.charAt(i)){
                prefix+=s1.charAt(i);
            }else{
                break;
            }
        }
        return prefix;
    }
}

在这里插入图片描述

import java.util.*;
class Class27{
    public static void main(String[] args){
        Scanner scanner=new Scanner(System.in);
        System.out.print("请输入密码:");//提示用户输入密码
        String s=scanner.nextLine();
        CheckPassword cp=new CheckPassword(s);//创建一个 检测密码对象并传入密码
        System.out.println(cp.isCheck(s));//该对象调用检测密码方法
    }
}
class CheckPassword{
    private String password;//定义一个字符串成员变量表密码
    public CheckPassword(String password){//定义构造函数 并传入一个字符串
        this.password=password;
    }
    public boolean isCheck(String password){//定义方法检测字符串是否是有效密码
        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.isDigit(c)||Character.isLetter(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;
    }
}

在这里插入图片描述

import java.util.*;
class Class34{
    public static void main(String[] args){
        String[] words={"curry","jeams","irving","harden","drant"};//创建单词表
        WordGame wg=new WordGame(words);//创建 单词游戏对象 传入单词表
        wg.StartGame();//该对象调用游戏开始 方法
    }
}
class WordGame{
    private String[] words;//定义成员变量表示用户传入的单词表
    private String word;//定义成员变量表示当前正在猜测的单词
    private Random random;
    private int misscount;//定义成员变量表示猜错的次数
    private boolean[] states;//定义成员变量表示当前单词的密文状态
    public WordGame(String[] words){//定义构造方法 传入单词表
        this.words=words;
        this.random=new Random();
    }
    public void StartGame(){//定义方法 游戏开始及游戏流程
        Scanner scanner=new Scanner(System.in);
        while(true){
            //随机产生一个单词
            word=words[random.nextInt(words.length)];
            //创建该单词的密文状态表
            states=new boolean[word.length()];
            //根据密文状态 生成提示单词
            while(!isGameover()){
                String str=getWord();
                System.out.println("Enter a letter in word ");
                String ch=scanner.nextLine();
                if(word.contains(ch)){
                    //改变密文状态
                    changeStates(ch);
                }else{
                    System.out.print(ch+" is not in the word");
                    misscount++;
                }
            }
            System.out.println("The word is "+word+".you missd "+misscount+" time");
            System.out.print("Do you want to guess another word?Enter y or n:");
            String choice=scanner.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 String getWord(){//定义方法 生成单词或*
        String s="";
        for(int i=0;i<states.length;i++){
            if(states[i]){
                s+=word.charAt(i);
            }else{
                s+="*";
            }
        }
        return s;
    }
    private void changeStates(String ch){//定义方法改变密文状态
        for(int i=0;i<states.length;i++){
            if(ch.equals(word.charAt(i)+"")){
                if(states[i]==true){
                    System.out.print(ch+"is alread in the word");
                    return;
                }else{
                    states[i]=true;
                }
            }
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值