Day1

eg1:猜数字游戏

package test;

import com.company.Main;
import jdk.net.NetworkPermission;

import java.util.Scanner;

public class Demo02 {

    /*
    * Java:静态面向对象编程语言的代表
    * sun--->2004年被甲骨文收购了  mysql也隶属于甲骨文了
    *
    * static:
    *一,数据类型:
    * 作用:告知系统将要存储的数据需要多大的空间
    * 分类:
    * 引用数据类型:数组   类  接口   枚举
    * 基本数据类型:
    * 数值型:
    *    整数型:byte(1) short(2) int(4) long(8)
    *    浮点型: float(4) double(8)
    * 字符型: char(2) 字符型变量需要用单引号引用
    * 布尔型:boolean(1) true false
    *
    * 二,基本数据类型的转换
    * 优先级
    * byte,short()<int<long<float<double
    *
    * 自动转换:低优先级向高优先级转换
    * 强制转换:高优先级向低优先级转换
    *
    * 注意:
    * 程序中所有的整数默认类型为int
    * 程序中所有的小数默认为double
    *
    * 三,变量
    * 分类:
    *     全局变量:属性  声明在类体中的变量
    *     局部变量:声明在方法体或者代码块
    * 变量的作用域:
    * 全局变量的作用是从声明开始,一直到类体的使用结束
    * 局部变量的作用是从声明开始,一直到方法或者代码块的结束
    *
    * 注意:
    *     局部变量在使用之前必须进行初始化
    *     全局变量如果不进行初始化,系统会自动分配
    * static关键字表示静态成员(修饰类的成员)
    * break
    * continue
    * */


    public static void main(String[] args) {
        test1();
        //所有方法的执行和运行   都需要在主函数中
        //    Java中不允许在一个类中存在同名方法
    }
    public static void test1(){
//    eg:猜数字小游戏
//    1.根据随机数,产生一个数字,范围(0-100)
//    2.猜测他的大小,如果猜测的数字大于随机数的数字,那么提示猜大了
//    3.如果小于,提示猜小了
//    4.通过猜对过程中使用的次数,判断你的智商等
        System.out.println("guess the number");
        //定义变量的格式: 类型名  变量名=变量值
        //           常量:值不可以改变的数据
        //              特点:一个常量只能存储一个数据 一旦被初始化那么久不能再次赋值 final 修饰常量
        // 1.定义一个随机数Math.random()默认随机一个0-1之间的随机数
   //遇到报错,万能键 Alt+回车键
        int num = (int) (Math.random()*100);
//        System.out.println(num);
        System.out.println("游戏开始!");
//        2.控制台输入的声明定义
        Scanner scanner = new Scanner(System.in);
//        错误:红色的才需要处理     警告:深黄色(不需要进行处理)
//           注意:不是虽有的警告都不会报错(报红色)
        int cai = scanner.nextInt();
//        System.out.println(cai);
//        分支
        /*单分支:
        * if(){}else{}
        * 多分支:
        * if(判断表达式1){
        * } else if(判断表达式2){
        *
        * }else if(判断表达式3){
        * }
        * 注意:Java中不建议多分支的判断超过3个
        * switch case 选择语法
        * */
//        循环
        /*
        * for(int i=0;i<9;i++){
        *   结果
        * }
        * while(判断表达式){
        *   结果
        * }
        * do{
        *     先执行的代码
        * }while(判断表达式)
        *
        * */
//        次数的变量值
        int count = 1;
        do{
            if (cai>num){
                System.out.println("大了大了,");
            }else if (cai<num){
                System.out.println("小了小了,");
            }else {
                System.out.println("猜对了");
                break;//跳出
            }
            count++;
            cai = scanner.nextInt();
        }while (cai!=num);
        System.out.println("你一共猜了"+count+"次");
//        等级判断
        switch (count){
            case 1:
                System.out.println("TQL,一发入魂,yyds!!!");
                break;
            case 2:
            case 3:
            case 4:
            case 5:
                System.out.println("Just so so !");
                break;
            default:
                System.out.println("菜鸡互啄!");
        }
    }

运行结果:

guess the number
游戏开始!
10
小了小了,
50
大了大了,
30
小了小了,
40
小了小了,
48
大了大了,
45
大了大了,
44
你一共猜了7次
菜鸡互啄!

Process finished with exit code 0

eg2:模拟登陆和注册

package test;

import com.company.Main;
import jdk.net.NetworkPermission;

import java.util.Scanner;

public class Demo02 {

    /*
    * Java:静态面向对象编程语言的代表
    * sun--->2004年被甲骨文收购了  mysql也隶属于甲骨文了
    *
    * static:
    *一,数据类型:
    * 作用:告知系统将要存储的数据需要多大的空间
    * 分类:
    * 引用数据类型:数组   类  接口   枚举
    * 基本数据类型:
    * 数值型:
    *    整数型:byte(1) short(2) int(4) long(8)
    *    浮点型: float(4) double(8)
    * 字符型: char(2) 字符型变量需要用单引号引用
    * 布尔型:boolean(1) true false
    *
    * 二,基本数据类型的转换
    * 优先级
    * byte,short()<int<long<float<double
    *
    * 自动转换:低优先级向高优先级转换
    * 强制转换:高优先级向低优先级转换
    *
    * 注意:
    * 程序中所有的整数默认类型为int
    * 程序中所有的小数默认为double
    *
    * 三,变量
    * 分类:
    *     全局变量:属性  声明在类体中的变量
    *     局部变量:声明在方法体或者代码块
    * 变量的作用域:
    * 全局变量的作用是从声明开始,一直到类体的使用结束
    * 局部变量的作用是从声明开始,一直到方法或者代码块的结束
    *
    * 注意:
    *     局部变量在使用之前必须进行初始化
    *     全局变量如果不进行初始化,系统会自动分配
    * static关键字表示静态成员(修饰类的成员)
    * break
    * continue
    * */


    public static void main(String[] args) {
        test2();
        //所有方法的执行和运行   都需要在主函数中
        //    Java中不允许在一个类中存在同名方法
    }
//      eg2:
/*      模拟登陆和注册
*       1.控制台上运行,每一次的运行都是基于控制台
*       2.注册 (系统不会限制你的注册次数)
*       3.注册  输入两次密码,判断两次密码的正确性
*       4.登陆  限制三次  超过三次  就限制登陆(结束程序,终止程序)
* */
    public static void test2(){
        //1.控制台输入
        Scanner scanner = new Scanner(System.in);
        // 输入用户名和密码
        String username = "";
        String password = "";
        //  注册
        //while (true)
        for (;;){
                System.out.print("请输入你要注册的用户名:");
                String user = scanner.nextLine();
                System.out.print("请输入你要注册的密码:");
                String pwd1 = scanner.nextLine();
                System.out.print("请输入你要确认的密码:");
                String pwd2 = scanner.nextLine();
                //判断两次密码的正确性 再去赋值
                //equals() 可以判断任何类型的长度和字符内容
                if (pwd1.equals(pwd2)) {
                    System.out.println("注册成功!");
                    //将注册的值进行赋值
                    password = pwd1;
                    username = user;
                }
                //登陆
                for (int i=1;i<=3;i++){
                    System.out.print("请输入你要登陆的用户名:");
                    String NewUsername = scanner.next();
                    System.out.print("请输入你要登陆的密码:");
                    String NewPassword = scanner.next();
                    //判断输入的密码与注册的是否对应
                    //逻辑运算符
                    //   逻辑与: &&  ---符号两边同时满足要求
                    //   逻辑或: ||  ---符号两边只要有一边满足即可
                    //   逻辑非: !  ---
                    //逻辑运算同样满足 :短路原则
                    if (NewUsername.equals(username)&&NewPassword.equals(password)) {
                        System.out.println("恭喜您,登陆成功!");
                        break;
                        //continue  继续
                    }else {
                        System.out.println("用户名或密码错误,你还有"+(3-i)+"次机会");
                        if (i==3){
                            System.out.println("由于你在输入用户名或密码出现多次错误,请核对后稍后再进行重试!");
                            break;
                        }
                    }
                }
                break;
            }    
    }

输出:

成功登陆:
请输入你要注册的用户名:admin
请输入你要注册的密码:123456
请输入你要确认的密码:123456
注册成功!
请输入你要登陆的用户名:admin
请输入你要登陆的密码:123456
恭喜您,登陆成功!
登陆失败:
请输入你要注册的用户名:admin
请输入你要注册的密码:admin
请输入你要确认的密码:admin
注册成功!
请输入你要登陆的用户名:admin
请输入你要登陆的密码:123456
用户名或密码错误,你还有2次机会
请输入你要登陆的用户名:1123
请输入你要登陆的密码:11
用户名或密码错误,你还有1次机会
请输入你要登陆的用户名:1
请输入你要登陆的密码:1
用户名或密码错误,你还有0次机会
由于你在输入用户名或密码出现多次错误,请核对后稍后再进行重试!

eg3:冒泡排序

package test;

import com.company.Main;
import jdk.net.NetworkPermission;

import java.util.Scanner;
public static void main(String[] args) {
     test3();
    public class Demo02 {
    /*eg3:冒泡排序
    * 数组
    *
    * 一,数组的使用:
    *   下标访问:从0开始
    *   数组长度:length属性
    *           arr.length
    *   数组的遍历:
    *        普通的for循环   借助数组的下标进行循环(默认换行输出)
    *        增强for循环
    *   数组元素的重新赋值:
    *        给某个元素    利用下标赋值
    *        给所有元素    (必须用循环才可以)
    *   元素的查找:
    *        顺序查找,二分法,冒泡,快速查找
    *   排序:
    *        选择排序
    *
    * 二,多维数组
    *   1.数组中可以存储基本数据类型,也可以存储引用的数据类型
    *    二维数组:
    *        一个数组中,所有的元素还是数组
    *
    * */
//    冒泡排序
//    要求:在控制台上输入N个数字,进行排序
    public  static void test3(){
        System.out.print("请输入数组位数:");
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        //定义一个数组为arr,元素个数为n的整形数组
        int[] arr = new int[n];
        System.out.print("请输入数组元素:");
        //使用循环进行元素的添加   数组中的元素下标进行
        for (int i=0;i<n;i++){
        //将键盘输入的元素一次放入数组
            arr[i] = scanner.nextInt();
        }
        System.out.println(arr[0]);
        // 上面的操作相当于--->定义一个有元素的数组
        //下面进行排序
        for (int i=0;i<arr.length;i++){
            for (int j=0;j<arr.length-i-1;j++){
                //比较相邻2个元素的大小
                if (arr[j]<arr[j+1]){
                    //交换元素位置
                    int temp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1]=temp;
                }
            }
        }
        System.out.println("冒泡排序完之后的数组为:");
        // 增强for  int 类型
        for(int num:arr){
            System.out.println(num);
        }
    }

}

输出:

请输入数组位数:5
请输入数组元素:
23
14
25
36
12
冒泡排序完之后的数组为:
36
25
23
14
12

Day1 作业:

//1.定义一个数组,实现冒泡排序

//2.将上面排序好的数组,进行逆序输出

//3.在控制台输入一个日期,判断这个日期是这一年的第几天?

//4.设计一个程序,静态初始化一个整形数组,将这个数组中的每个元素向前移动一位,将第一个元素移动到最后一个位置

例:原数组:int[] arr = {1,2,3,4,5};
    执行完程序数组变为:int[] arr = {2,3,4,5,1};

//5.设计一个程序,键盘输入一个三位数,计算出这个数的各位之和

例:123计算结果为1+2+3=6

代码如下:

package test;

import java.util.Scanner;

public class Day1 {
    public static void main(String[] args) {
        System.out.println("\n第一题和第二题:冒泡排序");
        bubble_sort();
        System.out.println("\n第三题:得到某年第几天");
        getDateNum();
        System.out.println("\n第四题:数组移位");
        work4();
        System.out.println("\n第五题:三位数和");
        work5();

    }
    //1.定义一个数组,实现冒泡排序
    public static void bubble_sort(){
        int[] arr = new int[]{25, 15, 25, 43, 25, 63, 77, 95, 72, 0};
        System.out.println("初始序列:");
        for(int num:arr){
            System.out.print(" "+num);
        }
        for (int i=0;i<arr.length-1;i++){
            for (int j=0;j<arr.length-i-1;j++){
                if (arr[j]<arr[j+1]){
                    int tmp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = tmp;
                }
            }
        }
        System.out.println();
        System.out.println("冒泡排序后得到的结果为:");
        for(int num:arr){
            System.out.print(" "+num);
        }
        System.out.println();

        //2.将排序好的数组逆序输出
        System.out.println("逆序后得到的结果为:");
        for(int i=arr.length-1;i>=0;i--){
            System.out.print(" "+arr[i]);
        }
        System.out.println();
    }

    //3.在控制台输入一个日期,判断这个日期是这一年的第几天?
    public static void getDateNum(){
        Scanner scanner = new Scanner(System.in);
        System.out.println("输入年月日");
//        定义一个数组存3位数
        int[] inputDate = new int[3];
        for(int i=0;i<3;i++){
            inputDate[i] = scanner.nextInt();
        }
//        定义变量年月日,并赋值
        int year = inputDate[0];    // 得到年
        int month = inputDate[1];   // 得到月
        // 判断月份是否合法
        if (month > 12 || month < 0){
            System.out.println("对不起,我还没听说过一年有"+month+"个月呢?");
            System.exit(1);
        }
//        定义一个二月,用来存放2月天数
        int february;
        if (year % 4 == 0 || year % 100 == 0 || year % 400 == 0) {
//            闰年29,否则28
            february = 29;
        } else {
            february = 28;
        }
//        判断用户输入的日期是否合法
        if (month==1||month==3||month==5||month==7||month==8||month==10||month==12){
            if (inputDate[2] > 31 || inputDate[2] < 0){
                System.out.println("你小学没学好吧,这年的"+month+"月有"+inputDate[2]+"天吗?");
                System.exit(1);
            }

        }else if (month == 2){
            if(inputDate[2] > february || inputDate[2] < 0){
                System.out.println("建议重读小学,这年的"+month+"月有"+inputDate[2]+"天?");
                System.exit(1);
            }
        }else {
            if(inputDate[2] > 30 || inputDate[2] < 0){
                System.out.println("建议直接退学吧,你都大学了,"+month+"月有"+inputDate[2]+"天?");
                System.exit(1);
            }
        }
        int day = inputDate[2];     // 得到日

//        默认第0天开始
        int dayNum = 0;
//        若为12月,总天数就是前几个月所有加上12月那几天
        switch (month-1){
            case 11:dayNum+=30;
            case 10:dayNum+=31;
            case 9:dayNum+=30;
            case 8:dayNum+=31;
            case 7:dayNum+=31;
            case 6:dayNum+=30;
            case 5:dayNum+=31;
            case 4:dayNum+=30;
            case 3:dayNum+=31;
            case 2:dayNum+=february;
            case 1:dayNum+=31;
        }
//        加上本月那几天
        dayNum += day;
        System.out.println(month+"月"+day+"日是"+year+"的第"+dayNum+"天!");
    }

    //    4.设计一个程序,静态初始化一个整形数组,将这个数组中的每个元素向前移动一位,将第一个元素移动到最后一个位置
//    例:原数组:int[] arr = {1,2,3,4,5};
//    执行完程序数组变为:int[] arr = {2,3,4,5,1};
    public static void work4(){
        int[] arr = {1,2,3,4,5};
        System.out.println("初始序列:");
        for(int num:arr){
            System.out.print(" "+num);
        }
        System.out.println();
        int temp = arr[0];
        for (int i=0;i<arr.length-1;i++){
            arr[i] = arr[i+1];
        }
        arr[arr.length-1] = temp;
        System.out.println("经过置换后得到的为:");
        for(int num:arr){
            System.out.print(" "+num);
        }
        System.out.println();
    }

    //    5.设计一个程序,键盘输入一个三位数,计算出这个数的各位之和
//    例:123算结果为1+2+3=6
    public static void work5(){
        Scanner scanner = new Scanner(System.in);
        System.out.println("输入一个三位数:");
        int num = scanner.nextInt();
        int n1 = (int) num/100;     // 百位
        int n2 = (int) num%100/10;  // 十位
        int n3 = (int) num%10;      // 个位
        System.out.println(n1+"+"+n2+"+"+n3+"="+(n1+n2+n3));
    }

}

输出结果:(注意,这里在第三题,在二月份判断闰年和平年时,如果你输入的年份月数的天数与其不对应时,有一个判断,会直接停止运行程序)

第一题和第二题:冒泡排序
初始序列:
 25 15 25 43 25 63 77 95 72 0
冒泡排序后得到的结果为:
 95 77 72 63 43 25 25 25 15 0
逆序后得到的结果为:
 0 15 25 25 25 43 63 72 77 95

第三题:得到某年第几天
输入年月日
2021 2 26
1月2日是2021的第2天!

第四题:数组移位
初始序列:
 1 2 3 4 5
经过置换后得到的为:
 2 3 4 5 1

第五题:三位数和
输入一个三位数:
468
4+6+8=18

标签: none

暂无评论