Java基础之经典案例!!!

1.键盘录入你的出生日期(String),计算来的这个世界有多少天了...

/*
分析:
 1)录入出生日期
 2)将String 日期文本----->Date  :解析
 3)获取当前出生年月日所在的那个系统时间毫秒值
 4)public static long currentTimeMillis()//:计算当前系统时间毫秒值
 5)差值
 6)换算成天 /1000/60/60/24
*/
import java.util.Scanner;
public class Test {
    public static void main(String[] args) throws ParseException {

        Scanner sc = new Scanner(System.in) ;

        //提示并录入数据
        System.out.println("请您输入一个出生日期:") ;
        String birthday =sc.nextLine() ;

        //将String---解析为 Date日期格式
        Date date = DateUtils.stringToDate(birthday, "yyyy-MM-dd");
        //获取date所在的系统时间毫秒值
        long oldTime = date.getTime();

        //获取当前系统时间毫秒值
        long nowTime = System.currentTimeMillis();

        long time = nowTime - oldTime ;

        //换算
        long day =time /1000 /60 /60 /24 ;
        System.out.println("您来到这个世界有"+day+"天了...");
    }

}

2.键盘录入字符串,包含数字,大写字母,小写字母字符(不考虑特殊字符),统计出现的个数

import java.util.Scanner;
public class CharacterTest {
    public static void main(String[] args) {

        //定义统计变量
        int bigCount = 0 ;
        int smallCount = 0 ;
        int numberCount = 0 ;

        //创建键盘录入对象
        Scanner sc  = new Scanner(System.in) ;

        //提示并录入数据
        System.out.println("请您输入一个字符串: ") ;
        String line = sc.nextLine() ;

        //方式1:---字符数组  方式2:----自己for循环变量
        for(int i = 0 ; i < line.length() ; i++){
            char ch = line.charAt(i) ;

            //使用Character静态功能判断
            if(Character.isDigit(ch)){
                numberCount ++  ;
            }else if(Character.isLowerCase(ch)){
                smallCount ++ ;
            }else if(Character.isUpperCase(ch)){
                bigCount ++ ;
            }
        }
        System.out.println("数字字符共有"+numberCount+"个") ;
        System.out.println("大写字母字符共有"+bigCount+"个") ;
        System.out.println("小写字母字符共有"+smallCount+"个") ;

    }
}

3.键盘录入任意年份,计算出2月份有多少天? (不考虑特殊年)

import java.util.Calendar;
import java.util.Scanner;
public class CalendarTest {
    public static void main(String[] args) {

        Scanner sc  = new Scanner(System.in) ;

        //提示并录入数据
        System.out.println("请您输入任意的年份值: ") ;
        int year = sc.nextInt() ;

        //创建日历对象
        Calendar c = Calendar.getInstance();

        //设置当前的日历字段
        c.set(year,2,1); //此时应该是3月1号

        //设置Date字段的偏移量
        c.add(Calendar.DATE,-1) ;

        System.out.println("任意年份的2月份有:"+c.get(Calendar.DATE));
    }
}

4.选择排序

class ArrayDemo {
    public static void main(String[] args) {
        //给定一个数组
        int[] arr = {24, 68, 87, 57, 13};
        selectSort(arr);
        printArray(arr);
        System.out.println("排序前:");
    }
    public static void selectSort(int[] arr) {
        for (int x = 0; x < arr.length - 1; x++) {//比较次数
            for (int y = x + 1; y < arr.length; y++) {//遍历后面的元素
                //判断
                if (arr[y] < arr[x]) {
                    int temp = arr[x];
                    arr[x] = arr[y];
                    arr[y] = temp;
                }
            }
        }
    }

    public static void printArray(int[] arr) {
        System.out.print("[");
        for (int x = 0; x < arr.length; x++) {
            if (x == arr.length - 1) {
                System.out.println(arr[x] + "]");
            } else {
                System.out.print(arr[x] + ", ");
            }
        }
    }
}

5.使用数组存储5个学生,并且输出学生信息(姓名,年龄)

//学生类
public class Student {
    private String name ;
    private int age ;

    public Student() {
    }

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}
//测试类
public class studentTest {
    public static void main(String[] args) {
        //有对象数组存储学生,
        //  数据类型[] 数组名称  = new 数据类型[长度] ;
        Student[] students = new Student[5] ;

        //创建5个学生
        Student s1 = new Student("詹姆斯",35) ;
        Student s2 = new Student("库里",31) ;
        Student s3 = new Student("姚明",38) ;
        Student s4 = new Student("乔丹",60) ;
        Student s5 = new Student("科比",38) ;


        //赋值
        students[0] = s1 ;
        students[1] = s2 ;
        students[2] = s3 ;
        students[3] = s4 ;
        students[4] = s5 ;

        //遍历数组
        for(int x = 0 ; x < students.length ; x ++){
           // System.out.println(students[x]) ; //直接输出对象名称

            //使用特有功能getXXX()获取信息
            Student s = students[x] ;
            System.out.println(s.getName()+"---"+s.getAge());
        }
    }
}

6.使用Collection存储5个学生,并使用迭代器进行遍历 ,通过getXXX()获取学生的姓名和年龄...

//学生类
public class Student {
    private String name ;
    private int age ;
    private String gender ;

    public Student() {
    }

    public Student(String name, int age, String gender) {
        this.name = name;
        this.age = age;
        this.gender = gender;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", gender='" + gender + '\'' +
                '}';
    }
}
测试类
public class CollectionTest {

    public static void main(String[] args) {

        //创建一个Collection集合
        Collection c = new ArrayList() ;

        //创建5个学生对象
        Student s1 = new Student("亚索",30,"男") ;
        Student s2 = new Student("盲僧",25,"男") ;
        Student s3 = new Student("德邦",22,"男") ;
        Student s4 = new Student("德玛西亚",35,"男") ;
        Student s5 = new Student("咔沙",22,"女") ;

            c.add(s1) ;
            c.add(s2) ;
            c.add(s3) ;
            c.add(s4) ;
            c.add(s5) ;

            //获取迭代器
            Iterator it = c.iterator();//本质就是:接口多态 Iterator it = new Itr() ;//内部类
            while(it.hasNext()){
            Student s = (Student) it.next();
            System.out.println(s.getName()+"----"+s.getAge()+"----"+s.getGender());
        }
    }
}

7.使用List集合存储5个学生,将学生信息的进行遍历

//学生类
public class Student {
    private String name ;
    private int age ;

    public Student() {
    }

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}
//测试类
public class ListTest {

    public static void main(String[] args) {

        //创建List
        List list = new ArrayList<>() ;

        //创建5个学生
        Student s1 = new Student("迪丽热巴",27) ;
        Student s2 = new Student("宋祖儿",25) ;
        Student s3 = new Student("欧阳娜娜",25) ;
        Student s4 = new Student("张子枫",22) ;
        Student s5 = new Student("井川里予",20) ;

        //添加
        list.add(s1) ;
        list.add(s2) ;
        list.add(s3) ;
        list.add(s4) ;
        list.add(s5) ;

        //遍历
        //方式3:
        for (int i = 0; i 

8.使用List存储多个字符串,有重复元素,如何去重!

public class ListTest2 {
    public static void main(String[] args) {
        //创建List集合对象
        List list = new ArrayList<>() ;

        list.add("hello") ;
        list.add("world") ;
        list.add("javaee") ;
        list.add("hello") ;
        list.add("world") ;
        list.add("world") ;
        list.add("hello") ;
        list.add("javaee") ;
        list.add("android") ;
        list.add("android") ;
        list.add("php") ;
        list.add("php") ;

        //创建一个新的集合
        List newList = new ArrayList<>() ;
        //遍历旧集合获取每一个元素:增强for
        for(String s:list){
            //在新集合中判断是否包含这个元素,如果不包含,才给新集合中添加
            if(!newList.contains(s)){
                newList.add(s) ;
            }
        }
        //遍历新集合
        for(String s:newList){
            System.out.println(s);
        }
    }

}

9.创建Collection,加入泛型操作,存储几个学生,进行迭代器遍历

//学生类
public class Student {
    private String name ;
    private int age ;
    private String gender ;

    public Student() {
    }

    public Student(String name, int age, String gender) {
        this.name = name;
        this.age = age;
        this.gender = gender;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", gender='" + gender + '\'' +
                '}';
    }
}
//测试类
public class GenericTest {

    public static void main(String[] args) {

        //创建Collection集合
        Collection c = new ArrayList<>() ;

        //创建4个学生:古代四大美女
        Student s1 = new Student("貂蝉",32,"女") ;
        Student s2 = new Student("王昭君",30,"女") ;
        Student s3 = new Student("西施",25,"男") ;
        Student s4 = new Student("杨玉环",28,"女") ;

        c.add(s1) ;
        c.add(s2) ;
        c.add(s3) ;
        c.add(s4) ;
        //获取迭代器
        Iterator iterator = c.iterator();
        while(iterator.hasNext()){ //不明确循环次数
            Student s = iterator.next() ; 
            System.out.println(s.getName()+"---"+s.getAge()+"---"+s.getGender()) ;

        }
    }
}

10.使用ArrayList集合模拟用户登录和注册操作!

//针对用户的数据访问接口层
public interface UserDao {
    boolean isLogin(String username,String password) ;
    void register(User user) ;
}
//用户实体类
public class User {
    private String username ; //用户名
    private String password ; //用户密码

    public User() {
    }

    public User(String username, String password) {
        this.username = username;
        this.password = password;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String toString() {
        return "User{" +
                "username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}
//针对用户操作的数据访问接口实现
public class UserDaoImpl implements UserDao {

    //要被登录和注册共享
    private  static ArrayList list = new ArrayList<>() ;
 
    @Override
    public boolean isLogin(String username, String password) {
        //在登录的时候,还需要使用这个集合,需要将ArrayList遍历出来,获取用户信息----登录和注册应该是同一个集合
        //假设思想
        boolean flag = false ;//不成立
        //需要将ArrayList遍历出来,获取用户信息
        //针对List集合非空判断
        if(list!=null){
            System.out.println(list);
            for(User user :list){
                //判断
                if(user.getUsername().equals(username) && user.getPassword().equals(password)){
                    //修改标记
                    flag = true ;
                }
            }
        }
        return flag;
    }

    /**
     * 用户的注册功能
     * @param user  用户的实体对象
     */
    @Override
    public void register(User user) {
        //将用户User存储在哪里?  存储集合中----ArrayList
        //创建一个List集合
        //ArrayList list = new ArrayList<>() ;
        list.add(user) ;
    }
}
//游戏类
public class GuessNumberGame {

    private  GuessNumberGame(){}

    public static void startGame(){
        //产生一个随机数:1-100之间的随机数
        int num = (int) (Math.random()*100+1);

        int count = 0 ;
        while(true){
            //创建键盘录入对象
            Scanner sc = new Scanner(System.in) ;

            count ++ ;
            //提示并录入
            System.out.println("请输入要猜的数据: ") ;
            int guessNum = sc.nextInt() ;

            //判断
            if(guessNum > num){
                System.out.println("要猜的数字大了...");
            }else if(guessNum 

11.有3个Java基础班,每一个班级都看成一个ArrayList, 这个三个班级组成了一个大的集合ArrayList> 获取出每一个班级的学生的姓名和年龄;

//学生类
public class Student {
    private String name ;
    private int age ;

    public Student() {
    }

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;

    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}
//测试类
public class ArrayListTest {
    public static void main(String[] args) {

        //创建出大的集合
        ArrayList> bigArray = new ArrayList<>() ;

        //第一个Java基础班
        ArrayList firArray = new ArrayList<>() ;
        //创建3个学生
        Student s1  = new Student("唐僧",50) ;
        Student s2  = new Student("孙悟空",44) ;
        Student s3  = new Student("猪八戒",40) ;
        //添加数据
        firArray.add(s1) ;
        firArray.add(s2) ;
        firArray.add(s3) ;

        //添加到大集合中
        bigArray.add(firArray) ;

        //第二个Java基础班
        ArrayList secArray = new ArrayList<>() ;
        //三个学生
        Student s4  = new Student("宋江",40) ;
        Student s5  = new Student("武松",35) ;
        Student s6  = new Student("鲁智深",32) ;
        secArray.add(s4) ;
        secArray.add(s5) ;
        secArray.add(s6) ;

        bigArray.add(secArray) ;

        //第三个Java基础班
        ArrayList thirdArray = new ArrayList<>() ;
        Student s7  = new Student("曹操",45) ;
        Student s8  = new Student("刘备",36) ;
        Student s9  = new Student("周瑜",33) ;
        thirdArray.add(s7) ;
        thirdArray.add(s8) ;
        thirdArray.add(s9) ;

        bigArray.add(thirdArray) ;

        //遍历 ArrayList>
        for(ArrayList array :bigArray){
            for(Student s :array ){
                System.out.println(s.getName()+"\t"+s.getAge());
            }
        }
    }
}

12.TreeSet,键盘录入5个学生的姓名,语文成绩,英语/数学,总分从高到低排序(自然排序)

//实现自然排序的接口Compareable
public class Student  implements  Comparable{
    //姓名
    private String name ;
    //语文成绩
    private int chinese ;
    //数学成绩
    private int math ;
    //英文成绩
    private int english ;

    public Student() {
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getChinese() {
        return chinese;
    }

    public void setChinese(int chinese) {
        this.chinese = chinese;
    }

    public int getMath() {
        return math;
    }

    public void setMath(int math) {
        this.math = math;
    }

    public int getEnglish() {
        return english;
    }

    public void setEnglish(int english) {
        this.english = english;
    }

    //计算总分
    public int getSum(){
        return chinese + math + english ;
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", chinese=" + chinese +
                ", math=" + math +
                ", english=" + english +
                '}';
    }

    //要进行比较
    @Override
    public int compareTo(Student s) {
        //排序的主要条件:
        //总分从高到低进行排序
        int num = s.getSum() - this.getSum() ;

        //分析次要条件:
        //总分相同,按照语文成绩:从低到高
        int num2 = (num==0)?(this.chinese-s.chinese):num ;
        //总分相同,语文相同,按照数学成绩:从低到高
        int num3 = (num2==0)?(this.math-s.math):num2;
        //总分相同,语文相同,按照英语排
        int num4 = (num3 ==0)?(this.english-s.english):num3 ;
        //如果都相同,不一定是同一个人,按照学生的姓名进行比较(字典顺序比较)
        int num5 = (num4==0)?(this.name.compareTo(s.name)):num4 ;
        return num5;
    }
}
//测试类
import java.util.Scanner;
public class TreeSetTest {
    public static void main(String[] args) {

        //创建TreeSet集合:无参构造方法:自然排序
        TreeSet ts = new TreeSet<>() ;
        System.out.println("录入学生信息开始: ");
        //录入5个学生
        for(int x = 1 ; x <=5 ; x ++){
            //创建键盘录入对象
            Scanner sc = new Scanner(System.in) ;

            //提示并录入数据
            System.out.println("请你输入第"+x+"个学生的姓名: ") ;
            String name = sc.nextLine() ;

            System.out.println("请你输入第"+x+"个学生的语文成绩: ") ;
            String chineseStr = sc.nextLine() ;

            System.out.println("请你输入第"+x+"个学生的数学成绩: ") ;
            String mathStr = sc.nextLine() ;

            System.out.println("请你输入第"+x+"个学生的英语成绩: ") ;
            String englishStr = sc.nextLine() ;

            //创建学生对象:封装学生数据
            Student s = new Student() ;
            s.setName(name) ;
            s.setChinese(Integer.parseInt(chineseStr)) ;
            s.setMath(Integer.parseInt(mathStr)) ;
            s.setEnglish(Integer.parseInt(englishStr)) ;

            //将学生添加集合中
            ts.add(s) ;
        }
        System.out.println("录入学生信息完毕: ") ;
        System.out.println("学生的总分从高到低排序如下: ") ;
        System.out.println("姓名\t语文成绩\t数学成绩\t英语成绩");
        //遍历集合
        for(Student s:ts){
            System.out.println(s.getName()+"\t"+s.getChinese()+"\t"+s.getMath()+"\t"+s.getEnglish());
        }
    }
}

13.使用集合模拟斗地主的洗牌和发牌,发到每个人手上牌有序

public class Test {
    public static void main(String[] args) {
        HashMap  hm = new HashMap<>();
        ArrayList array = new ArrayList<>();
        String[] colors = {"♥", "♠", "♣", "♦"} ;
        String[] numbers = {"3","4","5","6","7","8","9","10","J","Q","K","A","2"} ;
        int index = 0 ;
        for (String number : numbers) {
            for(String color : colors){
                String poker = color.concat(number);
                hm.put(index,poker);
                array.add(index);
                index++;
            }
        }
        hm.put(index,"小王");
        array.add(index) ;
        index++ ;
        hm.put(index,"大王");
        array.add(index);

        Collections.shuffle(array);

        TreeSet liuBei = new TreeSet<>() ;
        TreeSet guanYu = new TreeSet<>() ;
        TreeSet zhangFei = new TreeSet<>() ;
        TreeSet diPai = new TreeSet<>() ;
        for (int x= 0; x=array.size()-3){
                diPai.add(array.get(x)) ;
            }else if(x % 3 == 0 ){
                liuBei.add(array.get(x)) ;
            }else if(x % 3 == 1){
                guanYu.add(array.get(x)) ;
            }else if(x % 3 == 2){
                zhangFei.add(array.get(x)) ;
            }
        }
        lookPoker("刘备",liuBei,hm);
        lookPoker("关羽",guanYu,hm);
        lookPoker("张飞",zhangFei,hm);
        lookPoker("底牌", diPai, hm);

    }
    public static void lookPoker(String name, TreeSet ts,HashMap hm) {
        System.out.print(name + "的牌是:");
        for (Integer key : ts) {
            String value = hm.get(key);
            System.out.print(value + " ");
        }
        System.out.println();
    }

}

14.键盘录入学生的成绩(1-100分),判断学生的成绩(90-100优秀 80-90良好  70-80较好
 60-70及格   60以下不及格)

import java.util.Scanner ;
class IfDemo5{
	
	public static void main(String[] args){
		
		//创建键盘录入数据对象
		Scanner sc = new Scanner(System.in) ; 
		
		//提示并录入数据
		System.out.println("请您输入学生成绩:") ;
		int socre = sc.nextInt() ;
		
		if(socre>100 || socre<0){
			System.out.println("您输入的数据不合法...") ;
		}else if(socre>=90 && socre <=100){
			System.out.println("该学生成绩优秀...") ;
		}else if(socre >=80 && socre< 90){
			System.out.println("该学生成绩良好...") ;
		}else if(socre>=70 && socre<80){
			System.out.println("该学生成绩较好...") ;
		}else if(socre>=60 && socre<70){
			System.out.println("该学生成绩及格...") ;
		}else{
			System.out.println("不及格") ;
		}				
	}
}

15.键盘录入一个数据,判断该月份的季节 (if语句)( 3,4,5月---->春季  6,7,8月---->夏季  9,10,11月--->秋季  12,1,2---->冬季)

import java.util.Scanner ;
class Test{
	
	public static void main(String[] args){
		//创建键盘录入对象
		Scanner sc = new Scanner(System.in) ;
		
		//提示并录入
		System.out.println("请您录入一个月份:") ;
		int month = sc.nextInt() ;
		
		//判断
		if(month<=0 || month > 12){
			System.out.println("地球不存在该月份!!") ;
		}else if(month >= 3 && month <=5){
			System.out.println("春季") ;
		}else if(month>=6 && month<=8){
			System.out.println("夏季") ;
		}else if(month >= 9&& month<=11){
			System.out.println("秋季") ;
		}else{
			System.out.println("冬季") ;
		}
	}
}

16.李雷想买一个价值7988元的新手机,她的旧手机在二手市场能卖1500元,而手机专卖店推出以旧换新的优惠,把她的旧手机交给店家,新手机就能够打8折优惠。为了更省钱,李雷要不要以旧换新?请在控制台输出。

class Test{
	
	public static void main(String[] args){
		
		//定义变量
		//手机在二手市场能卖1500元,
		double money = 7988  - 1500 ;
		
		//以旧换新的价格
		double money2 = 7988 * 0.8 ;
		
		//判断money大于money2
		if(money > money2){
			System.out.println("以旧换新时的花费更省钱") ;
		}else{
			System.out.println("血亏...") ;
		}
	}
}

17.某银行推出了整存整取定期储蓄业务,其存期分为一年、两年、三年、五年,到期凭存单支取本息。存款年利率表如下:

存期 年利率(%)一年 2.25    两年 2.7   三年 3.25   五年 3.6

请存入一定金额(1000起存),存一定年限(四选一),计算到期后得到的本息总额。

//导包
import java.util.Scanner ;
class Test{
	public static void main(String[] args){
		//创建键盘录入对象
		Scanner sc  = new Scanner(System.in) ;
		
		//提示并录入数据
		System.out.println("请输入存款本金:") ;
		int money = sc.nextInt() ;
		
		System.out.println("请输入存款年限:") ;
		int year = sc.nextInt() ;
		
		//定义最终本息和
		double totalMoney = 0 ;
		//根据不同的年限来进行本息和计算
		if(year==1){
			totalMoney = money + money * 2.25 /100 * 1 ;
		}else if(year == 2){
			totalMoney = money + money * 2.7 /100 * 2 ;
		}else if(year == 3){
			totalMoney = money + money * 3.25 /100 * 3 ;
		}else if(year == 5){
			totalMoney = money + money * 3.6 /100 * 5 ;
		}else{
			System.out.println("您输入的年限有误!") ;
		}
		
		System.out.println(year+"年后的本息和是:"+totalMoney) ;
	}

}

 18.键盘录入三个数据,获取三个数据中的最大值,分别使用三元运算符/if格式嵌套

//导包
import java.util.Scanner ;
class Test1{
	
	public static void main(String[] args){
		
		//创建键盘录入对象
		Scanner sc = new Scanner(System.in) ;
		
		//提示并录入数据
		System.out.println("请您输入第一个数据:") ;
		int a = sc.nextInt() ;
		
		System.out.println("请您输入第二个数据:") ;
		int b = sc.nextInt() ;
		
		System.out.println("请您输入第三个数据:") ;
		int c = sc.nextInt() ;
		
		//三元运算符
		//两种方式
		//方式1:分步实现
		int temp = (a>b)? a: b ;
		int max = (temp >c)?temp:c ;
		System.out.println("最大值是:"+max) ;
		
		System.out.println("-----------------------------") ;
		
		int max2  = (a>b)?((a>c)?a:c):((b>c)?b:c) ;
		System.out.println("最大值是:"+max2) ;
		System.out.println("-----------------------------") ;
		
		//定义变量
		int max3 ;
		//if格式2嵌套
		if(a>b){
			
			//继续判断
			if(a>c){
				max3 = a ; 
			}else{
				max3 = c ;
			}
		}else{
			
			//上面不成立继续判断b和c
			if(b>c){
				max3 = b ;
			}else{
				max3 = c ;
			}
		}
		
		System.out.println("最大值是:"+max3) ;
	}
	
}	

  19.统计所有的 "水仙花数"有多个?    

/*分析步骤:
1)定义统计变量 count
2)水仙花:明确范围:100-999
3)确定每各位的数据本身ge,shi,bai 
4)满足的条件:ge*ge*ge+shi*shi*shi+bai*bai*bai==x, 这个时候统计变量++			
5)输出count即可
*/
class ForTest{
	
	public static void main(String[] args){
		
			//1)定义统计变量 count
			int count = 0 ;
			//2)水仙花:明确范围:100-999
			for(int x = 100 ; x <= 999; x ++){
				//确定每各位的数据本身ge,shi,bai 
				int ge = x % 10 ;
				int shi = x /10 % 10 ;
				int bai = x /10/10 % 10 ;
				
				//确定值满足的条件
				if((ge*ge*ge+shi*shi*shi+bai*bai*bai)==x){
					
					//统计变量++
					count ++ ;
					System.out.println("第"+count+"次的数据是:"+x) ;
				}
			}
			System.out.println("水仙花数共有"+count+"个") ;
			
		
	}
}

20.   1)求1-100之间的和   2)求1-100之间的偶数和   3)求5的阶乘:  n!= n * (n-1)!

class ForTest{
	public static void main(String[] args){	
		//定义一个最终结果变量
		int sum = 0 ;
		for(int x = 1 ; x <= 100 ; x ++){
			sum += x ;
		}
		System.out.println("1-100之间的和是:"+sum) ;
		
		System.out.println("--------------------------------") ;
		//求1-100之间的偶数和
		int sum2 = 0 ;
		for(int x = 1 ; x <= 100 ; x++){
			//判断条件
			if(x % 2 == 0){
				sum2 += x ;
			}
		}
		System.out.println("1-100之间的偶数和是:"+sum2) ;
		System.out.println("--------------------------------") ;
		
		//求5的阶乘:求阶乘思想和求和思想一致  
		//5*4*3*2*1  
		//5!=5 * 4! ;
		//4! = 4 * 3!;
		//3!= 3 * 2!;
		//2!=2 * 1!  (1!永远是1)
		//定义一个最终结果变量
		int jc = 1 ;
		for(int x = 2 ; x <=5 ; x ++){//x=2,x=3
			
			//计算
			jc*= x ;
			//jc * x = jc ;
			// 1 * 2 = 2; 
						// 2 * 3 = 6 
		}
		System.out.println("5的阶乘是:"+jc) ;
		
	}
}

21.键盘录入数据,猜数字小游戏(1-100之间的随机数)

//导包
import java.util.Scanner ;
class WhileTest2{
	public static void main(String[] args){
			//要产生一个1-100之间的随机数
			int num = (int)(Math.random()*100+1) ;		
			//死循环
			while(true){
				//需要不断的录入数据,
				//创建键盘录入对象
				Scanner sc = new Scanner(System.in) ;
				System.out.println("请输入一个是数字(1-100):") ;
				//键盘录入一个数据:guessNumber
				int guessNumber = sc.nextInt() ;
				
				//判断
				if(guessNumber>num){
					//大了
					System.out.println("您要猜的数字大了...") ;
				}else if(guessNumber

22.我国最高山峰是珠穆朗玛峰:8848m,我现在有一张足够大的纸张,厚度为:0.01m。请问,我折叠多少次,就可以保证厚度不低于珠穆朗玛峰的高度?

class WhileTest{
	public static void main(String[] args){
		
		//定义一个统计变量
		int count  = 0 ;
		
		//定义初始化厚度:一张足够大的纸张,厚度为:0.01m。 乘以100
		int start = 1 ;
		//定义最终厚度:珠穆朗玛峰:8848m   乘以100
		int end = 884800 ;
		
		//保证厚度不低于珠穆朗玛峰的高度,一直折叠,当等于最终厚度
		while(start<=end){
			//统计变量++
			count ++ ;
			
			//起始厚度变化,是之前的2倍
			start *=2 ;
			System.out.println("第"+count+"次的厚度是:"+start) ;
		}
		
		System.out.println("总共需要折叠"+count+"次") ;
	}
}

23.九九乘法表

class ForDemo{
	public static void main(String[] args){
		//99乘法表
		//为了表示有效数据:从1开始
		for(int x = 1 ; x <= 9 ; x++){//控制行数
			//内层循环:列数在变化
			for(int y = 1; y <=x ; y++){
				System.out.print( x+"*"+y+"="+(y*x)+"\t") ;
			}
			System.out.println() ;
		}
	}
}

24.使用for循环完成(for循环--)请在控制台输出满足如下条件的五位数,个位=万位,十位=千位,个位+十位+千位+万位=百位

class Test{
	
	public static void main(String[] args){
		//五位数 明确范围:10000  99999	  变量x
		for(int x = 10000; x <= 99999 ; x++){
			//获取每各位的数据本身质
			int ge = x % 10 ;
			int shi = x /10 % 10 ;
			int bai = x /10/10 %10;
			int qian= x / 10/10/10 % 10 ;
			int wan = x/10/10/10/10 % 10 ;
			
			//满足条件
			if((ge==wan) && (shi==qian)&&(ge+shi+qian+wan==bai)){
				//输出x
				System.out.println(x) ;
				
			}
		}
	}
}

25.“百钱买百鸡”是我国古代的著名数学题。题目这样描述:3 文钱可以买1只公鸡,2 文钱可以买一只母鸡,1 文钱可以买3 只小鸡。用100 文钱买100 只鸡,那么各有公鸡、母鸡、小鸡多少只?

class ChickenNumber{
	public static void main(String[] args){		
		//定义三个变量:x,y,z分别代表公鸡,母鸡,小鸡
		//
		//穷举公鸡数量
		for(int x = 0 ; x <= 33;x++){
			//获取到每一个公鸡数量
			//穷举出母鸡的数量
			for(int y = 0 ; y <= 50 ; y ++){
				//获取到每一个母鸡数量
				//定义小鸡的数量
				int z = 100-x-y ;
				
				//满足条件:
				//100文钱买有100只鸡(包含公鸡,母鸡,小鸡)
				//3 文钱可以买1只公鸡,
				//2 文钱可以买一只母鸡,
				//1 文钱可以买3 只小鸡,小鸡要能够3整除
				if((3*x+2*y+z/3==100) && (z%3==0)){
					System.out.println("公鸡有:"+x+"只"+",母鸡有:"+y+"只"+",小鸡有"+z+"只") ;
				}

			}
		}
	}
}

26.冒泡排序

class Test{
    public static void main(String args){
        int[] arr = {3,6,5,8,9,2,7,1};
        maoPao(arr) ;
        print(arr) ;
    }
    public static void maoPao(int[] arr){
        for(int x = 0 ; x < arr.length-1 ; x++){
            for(int y = 0 ; y < arr.length-1-x ; y++){
                if(arr[y] >arr[y+1]){
                    int temp = arr[y] ;
                    arr[y] = arr[y+1] ;
                    arr[y+1] = temp ;
                }
            }
        }
    }

    public static void print(int[] arr){
        System.out.println("[") ;
        for(int x = 0 ; x < arr.length ; x++){
            if(x == arr.length-1){
                System.out.println(arr[x] + "]");
            }else{
                System.out.println(arr[x] + ",");
            }
        }
    }
}

27.设计一个台灯类(Lamp)其中台灯有灯泡类(Buble)这个属性,还有开灯(on)这个方法。设计一个灯泡类(Buble),灯泡类有发亮的方法(shine),其中有红灯泡类(RedBuble)和绿灯泡(GreenBuble)他们都继承灯泡类(Buble)一个发亮的方法。 设计完成后进行测试

public class Lamp {

    Buble buble ;//灯泡的属性 (灯泡事物)

    //设计的一个开灯的方法on
    public void on(Buble buble){ //形式参数是一个引用类型:灯泡类
            // 实际参数---  Buble buble = new RedBuble() ; /new GreenBubble();
        buble.shine() ;
    }
}
public class Buble {

    //灯泡类有发亮的方法(shine)
    public void shine(){
        System.out.println("灯泡可以发亮了...");
    }
}
//红灯泡
public class RedBuble extends Buble {

    @Override
    public void shine() {
        System.out.println("灯泡可以发红光...");
    }
}
//绿灯泡
public class GreenBuble extends Buble {

    @Override
    public void shine() {
        System.out.println("灯泡可以发绿光了...");
    }
}
//测试类
public class DuoTaiTest {
    public static void main(String[] args) {

        //开灯---->创建台灯类对象
        Lamp lamp = new Lamp() ;

        //多态的方式:父类引用执行子类对象
        Buble buble = new RedBuble() ;
        lamp.on(buble);

        System.out.println("-----------------------------");

        //重新创建一个灯泡类
        Buble buble2 = new GreenBuble() ;//绿灯泡
        lamp.on(buble2);
    }
}

28.在现实生活中,我们经常通过电脑的 USB 接口来使用一些设备, * 例如 mp3 、移动硬盘、优盘等。现在要求使用面向接口编程去模拟实现这个例子。 * 实现步骤 * (1)创建 USB 接口,接口中只定义一个 work()方法。 * (2)创建 MP3 类并实现 USB 接口。 * (3)创建优盘类(U_Disk)并实现 USB 接口。 * (4)创建电脑类(Computer)并定义一个使用接口的方法 useMobile(USB u)。 * (5)测试类中分别创建对应的对象进行测试,MP3对象,优盘类对象,电脑对象)

//USB接口
public interface USB {
    void work() ;//工作
}
//MP3类
public class MP3 implements USB{
    @Override
    public void work() {
        System.out.println("可以听音乐了...");
    }
}
//U盘
public class U_Disk implements USB {
    @Override
    public void work() {
        System.out.println("实现数据的传输");
    }
}
//电脑类
public class Computer {

    //成员方法
    public void userMobile(USB u){
        u.work() ;
    }
}
//测试类
public class Test {

    public static void main(String[] args) {

        //有一个电脑
        Computer computer = new Computer() ;
        //使用移动设备

        //接口多态
        USB usb = new MP3() ;
        computer.userMobile(usb);
        USB usb2 = new U_Disk() ;//u盘
        computer.userMobile(usb2) ;

        System.out.println("-----------------------------------") ;
        //匿名对象
        computer.userMobile(new MP3()) ;
        computer.userMobile(new U_Disk()) ;
    }
}

29.定义榨汁机JuiceMachine 有榨汁方法makeJuice,传入相应的水果。 * 如果传入的是Apple 输出 "流出苹果汁" * 传入的是Orange 输出 "流出橙汁" * 传入的是Banana 输出 "流出香蕉酱"

//工具类
public class JuiceMachine {

    //构造方法私有化
    private  JuiceMachine(){}
    public static void makeJuice(Fruit fruit){ 
        fruit.juice() ;
    }
}
//public abstract class Fruit {

    //声明一个方法:让子类具体实现
    public abstract  void juice() ;
}
//苹果类
public class Apple extends Fruit {
    @Override
    public void juice() {
        System.out.println("流出苹果汁");
    }
}
//香蕉类
public class Banana extends Fruit {
    @Override
    public void juice() {
        System.out.println("流出香蕉酱...");
    }
}
//橙子类
public class Orange extends Fruit {
    @Override
    public void juice() {
        System.out.println("流出橙汁");
    }
}
//测试类
public class Test3 {
    public static void main(String[] args) {
       JuiceMachine.makeJuice(new Apple()) ;
       JuiceMachine.makeJuice(new Banana()) ;
       JuiceMachine.makeJuice(new Orange()) ;

    }
}

30.教练和运动员(自己分析属性以及行为方法) 1. 乒乓球运动员和篮球运动员。2. 乒乓球教练和篮球教练。3. 为了出国交流,跟乒乓球相关的人员都需要学习英语。4.请用所学知识: 分析,这个案例中有哪些抽象类,哪些接口,哪些具体类(自定义属性以及一些成员方法,进行测试!)

//接口
public interface StudyEnglish {

    void speakEnglish() ;
}
//抽象人类
public abstract class Person {

    //姓名,年龄,性别
    private String name ;
    private int age ;
    private String gender ;

    public Person() {
    }

    public Person(String name, int age, String gender) {
        this.name = name;
        this.age = age;
        this.gender = gender;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    //人的吃东西不同
    public abstract  void eat() ;
}
//教练类
public abstract class Coach extends Person {
    public Coach() {
    }

    public Coach(String name, int age, String gender) {
        super(name, age, gender);
    }

    //教练教授的东西不同
    public  abstract void teach() ;

    @Override
    public void eat() {
        System.out.println("教练吃普通的工作餐");
    }
}
//乒乓球教练
public class PingPangCoach extends Coach implements StudyEnglish {
    public PingPangCoach() {
    }

    public PingPangCoach(String name, int age, String gender) {
        super(name, age, gender);
    }

    @Override
    public void teach() {
        System.out.println("乒乓球教练教授如何发球和杀球...");
    }

    @Override
    public void speakEnglish() {
        System.out.println("乒乓球教练会使用英语交流...");
    }
}
//篮球教练
public class BasketCoach extends Coach {
    public BasketCoach() {
    }

    public BasketCoach(String name, int age, String gender) {
        super(name, age, gender);
    }

    @Override
    public void teach() {
        System.out.println("篮球教练教授如何运球和投篮...");
    }
}
//运动员类
public abstract class Player extends Person {

    public Player() {
    }

    public Player(String name, int age, String gender) {
        super(name, age, gender);
    }

    //运动员学习的东西不同的
    public abstract  void study();

    @Override
    public void eat() {
        System.out.println("运动员吃营养餐...");
    }
}
//乒乓球运动员
public class PingPangPlayer extends Player implements StudyEnglish {
    public PingPangPlayer() {
    }

    public PingPangPlayer(String name, int age, String gender) {
        super(name, age, gender);
    }

    @Override
    public void study() {
        System.out.println("乒乓球运动员学习如何接球和发球");
    }

    @Override
    public void speakEnglish() {
        System.out.println("乒乓球运动员会使用英语交流...");
    }
}
//篮球运动员
public class BasketPlayer extends Player {
    public BasketPlayer() {
    }

    public BasketPlayer(String name, int age, String gender) {
        super(name, age, gender);
    }

    @Override
    public void study() {
        System.out.println("篮球运动员学习如何投篮和运球...");
    }
}
//测试类
public class Test5 {
    public static void main(String[] args) {
        //抽象类多态----+接口多态
        Person p = new PingPangPlayer() ;
        p.setName("张继科") ;
        p.setAge(24) ;
        p.setGender("男") ;
        System.out.println(p.getName()+"---"+p.getAge()+"---"+p.getGender()) ;
        p.eat() ;
        PingPangPlayer pingPangPlayer = (PingPangPlayer) p;
        pingPangPlayer.study() ;
        StudyEnglish se = new PingPangPlayer() ;
        se.speakEnglish() ;
    }
}

31.定义一个动物类,里面有一个方法voice(), * 定义一个类Cat,实现voice方法 * 然后增加一种新的动物类型:Pig(猪),实现voice()方法。 * 定义一个Dog类,实现voice方法 * 定义一个Store(宠物店)类的getInstance方法: * 如果传入的参数是字符串dog,则返回一个Dog对象; * 如果传入pig,则返回一个Pig对象;否则,返回一个Cat对象。

//动物类
public abstract class Animal {

    public  abstract  void voice() ;
}
//猫类
public class Cat extends Animal {
    @Override
    public void voice() {
        System.out.println("猫发出喵喵的叫声...");
    }
}
//狗类
public class Dog  extends Animal{
    @Override
    public void voice() {
        System.out.println("狗发出汪汪的叫声...");
    }
}
//猪类
public class Pig extends Animal {
    @Override
    public void voice() {
        System.out.println("猪发出哼哼的叫声...");
    }
}
//宠物店
public class Store {
    private Store(){}
    public static Animal getInstance(String type){ /
        //判断
        if(type.equals("dog")){
            return  new Dog() ;
        }else if(type.equals("pig")){
            //返回猪类对象
            return  new Pig() ;
        }else if(type.equals("cat")){
            return new Cat() ;
        }else{
            System.out.println("当前宠物店没有这个动物...");
        }
        return  null ;
    }
}
//测试类
public class Test {
    public static void main(String[] args) {
        //宠物店,里面有静态功能
        Animal a = Store.getInstance("dog"); //相当于:Animal a = new Dog() ;
        a.voice() ;
        a = Store.getInstance("pig") ;
        a.voice() ;
        a = Store.getInstance("monkey") ;

        //非空判断
        if(a!=null){
            a.voice() ;
        }
        int m = 20 ;
        int n = 10 ;
        System.out.println(m==n);

        Cat c = new Cat();
        Cat c2 = new Cat() ;
        System.out.println(c==c2) ; //引用类型:==比较是地址值是否相同
        Cat c3 = c ;
        System.out.println(c==c3);
    }
}

32.键盘录入一个字符串数据:举例: 录入 "Helloworldjavaee"  输出结果:"hELLOWORLDJAVAEE"

public class Test {
    public static void main(String[] args) {
        //创建键盘录入对象
        Scanner sc = new Scanner(System.in) ;

        //提示并录入数据
        System.out.println("请录入字符串数据:");
        String line = sc.nextLine() ;

        //截取第一个字符出来
        String s1 = line.substring(0, 1);
        //将s1字符串--->转换小写
        String s2 = s1.toLowerCase();

        //截取后面的子字符串出来
        String s3 = line.substring(1);//默认截取到末尾
        //将s3转换成大写
        String s4 = s3.toUpperCase();
        //将s2和s4拼接
        String result = s2.concat(s4) ;
        System.out.println("result:"+result);
        
        System.out.println("----------------------------------------------------");
        //链式编程
        String result2 = line.substring(0, 1).toLowerCase().
                concat(line.substring(1).toUpperCase());
        System.out.println("result2:"+result2) ;
    }
}

33.键盘录入用户名和密码和已知的用户名和密码比较,模拟用户登录,给三次机会 ,如果信息一致,则提示“登录成功”,否则,提示“您还剩 x 次机会”,如果达到三次了,提示“您的账号被锁定,请联系管理员”

public class Test {
    public static void main(String[] args) {

        //已知用户名和密码:username 和password都是"admin"
        String username = "admin" ;
        String password = "admin" ;

        //模拟用户登录,给三次机会:明确循环次数

        for(int x = 0 ; x < 3 ; x ++){
            Scanner sc = new Scanner(System.in) ;
            //提示并录入数据
            System.out.println("请您输入用户名:") ;
            String name = sc.nextLine() ;

            System.out.println("请您输入密码:") ;
            String pwd = sc.nextLine() ;

            //判断
            if(username.equals(name) && password.equals(pwd)){
                //一致
                System.out.println("恭喜您,登录成功.可以开始玩游戏了");
                //调用玩游戏的类
                System.out.println("还玩吗?y/n");
                break ;
            }else{
                //换一种提示
                if((2-x)==0){
                    System.out.println("您的账号被锁定,请联系管理员");
                }else{
                    //没有用完
                    System.out.println("对不起,不一致,您还剩"+(2-x)+"次机会" );
                }
            }
        }
    }
}

你可能感兴趣的:(经典案例题,java)