2020-08-28 javaee学习 day-three

每日一练

如果苹果1元一个,桔子2元一个,芒果4元一个,若是用10元去买,有几种组合?

public class Demo8 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        //定义苹果价钱为a,桔子价钱为b,芒果价钱为c d为一共有多少钱
        int a,b,c,d;
        a = 1;
        b = 2;
        c = 4;
        d = 10;
        //定义n为一共有n种方法实现
        int n = 0;
        //只买苹果一共有多少种方法
        for(int i = 0;i <= 10/a;i++) {
            //只买桔子一共有多少种方法
            for(int j = 0;j <= 10/b;j++) {
                //只买芒果一共有多少种方法
                for(int z = 0;z <= 10/c;z++) {
                    if(a*i+b*j+c*z == d) {
                        n += 1;
                        System.out.println("苹果"+i+"\t桔子"+j+"\t芒果"+z);
                    }
                }
            }
        }
        System.out.println("一共有"+n+"方法实现");
    }

}

DAY-THREE

数组:

         格式:常用格式1:数据类型【  】 数组名称={数据1,数据2,。。。。。数组n};

                    常用格式2:数据类型【  】数组名称 = new 数据类型 【数组长度】;

                                         赋值:数组名称【下标】 =  值

             如何获取数组的长度:数组名称.length;用FOR循环取出数组数据叫遍历。

              寻找数组中的最大值:1.先遍历数组   三元式 n = n>num[i]?n:num【i】;

              寻找数组中的最小值:1.先遍历数组  三元式  n = n<num[i]?n:num [i];

           冒泡排序:比较轮数= 数组长度-1

                                        外层循环控制的是比较的轮数: 数组长度-1

                                         内层循环控制的是每轮比较的次数:数组长度-i-1

         二分查找法:思路:1.确定查找的范围:最大 最小

                                            2.计算中间的下标(最小+最大)/2

                                          3.比较中间下标数据,中间下标较大,则最大下标等于中间下标-1

                                               比较中间下标数据,中间下标较小,则最小下标等于中间下标

作业:

选队长游戏训练任务:

今天同学们相约一起爬山游玩,为了更好的进行这场活动,大家准备推举 一个人作为出游的临时队长。为了体现合理公平,大家提出了一个比较有趣的 规则。所有人围成一圈,顺序排号。从第一个人开始报数(从 1 到 3 报数), 凡报到 3 的人退出圈子,剩下的人继续报数,最后留下的当选为队长

package lok1;
import java.util.Arrays;
import java.util.Scanner;
public class Demo9 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner input = new Scanner(System.in);
        System.out.println("输入人数为:");
        int a = input.nextInt();
        int num = 0;//计数
        int people = 0;//总人数
        boolean[] b= new boolean[a];
        for(int i=0;i < b.length;i++ ) {
            b[i] = true;
            people = i+1;
                        
        }
        while(people >1) {
                
            for(int j = 0; j < b.length; j++) {
                if(b[j] == true) {
                    num += 1;                
                if(num == 3) {
                    b[j] = false;
                    people -= 1;
                    num = 0;
                }
        }
            }

        }
        for(int i = 0;i<b.length;i++) {
            if(b[i]==true) {
                i += 1;
                System.out.println("第"+i+"个同学为队长");
            }
        }
        System.out.println(Arrays.toString(b));
    }
}

查找某个整数

import java.util.Arrays;
import java.util.Scanner;
public class Demo11 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int[] nums = new int[10];
        System.out.println("输入10个整数");
        Scanner input = new Scanner(System.in);
        for(int i = 0;i<nums.length;i++) {
            nums[i] = input.nextInt();
        }
        //冒泡排序确定最大值
        System.out.println("对数组进行排序");
        for(int i = 0;i<nums.length-1;i++) {
            for(int j = 0;j<nums.length-i-1;j++) {
                int a = 0;
                if(nums[j]>nums[j+1]) {
                    a = nums[j+1];
                    nums[j+1] = nums[j];
                    nums[j] = a;
                }
            }
        }
        //二分查找
        System.out.println("输入要查找的数:");
        int a = input.nextInt();//要查找的数
        int max = nums.length-1;
        int min = 0;
        int mid =(max+min)/2;
        while(true) {
            if(nums[mid]>a) {
                max = mid-1;
            }else if(nums[mid]<a){
                min = mid+1;
            }else {
                break;
            }
            if(min>max) {
                mid = -1;
                System.out.println("没有这个数");
                break;
            }
            mid = (max+mid)/2;
        }
        
        System.out.println("位置"+mid);
        System.out.println("下标位置值"+nums[mid]);
        System.out.println(Arrays.toString(nums));
    }
    
}

找出数组的最值

import java.util.Scanner;
//找出数组的最值
public class Demo12 {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int[] nums = new int[10];
        System.out.println("输入10个整数:");
        for(int i= 0;i<nums.length;i++) {
            nums[i] = input.nextInt();
        }
        int max = nums[0];
        System.out.println("输入10个整数:");
        for(int i= 1;i<nums.length;i++) {
            max = max>nums[i] ? max : nums[i];
        }
        int min = nums[0];
        for(int i= 1;i<nums.length;i++) {
            min = min<nums[i] ? min : nums[i];
        }
        System.out.println("数组最大值为:"+max);
        System.out.println("数组最小值为:"+min);
    }
    
}


两数之和

public class Demo13 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int[] num = {2, 7, 11, 15};
        int target = 13;
        System.out.println("对数组进行排序");
        for(int i = 0;i<num.length-1;i++) {
            for(int j = 0;j<num.length-i-1;j++) {
                if(num[j]>num[j+1]) {
                    int a = 0;
                    a = num[j];
                    num[j] = num[j+1];
                    num[j+1] = a;
                }
            }
        }
        int c = 0 ;
        int b = 0 ;
        for(int i = 0;i<num.length;i++) {
            for(int j = i+1;j<num.length;j++) {
                if(num[i]+num[j] == target) {
                    c = i;
                    b = j;
                }
            }
        }
        System.out.println("下标"+c+"和"+b+"的和为目标值");
    }

}

*排序并查找
对数组{1,3,9,5,6,7,15,4,8}进行排序,然后使用二分查找 6 并
输出排序后的下标。*/

public class Demo14 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int[] nums = {1,3,9,5,6,8,15,4,8};
        for(int i = 0;i<nums.length-1;i++){
            for(int j = 0;j<nums.length-i-1;j++) {
                int a = 0;
                if(nums[j]>nums[j+1]) {
                    a = nums[j];
                    nums[j] = nums[j+1];
                    nums[j+1] = a;
                }
            }
        }
        int target = 6;
        int max = nums.length-1;
        int min = 0;
        int mid =(max+min)/2;
        while(true) {
            if(nums[mid]>target) {
                max = mid-1;
            }else if(nums[mid]<target){
                min = mid+1;
            }else {
                break;
            }
            if(min>max) {
                mid = -1;
            }
            mid = (max+min)/2;
        }
        System.out.println("目标的下标在"+mid);
        System.out.println(Arrays.toString(nums));
    }

}

 

移动零

 

import java.util.Arrays;

public class Demo15 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int[] nums = {0,1,0,3,12};
        int num = 0;
        for(int i = 0;i<nums.length;i++) {
            if(nums[i]==0) {
                num += 1;
            }else if(nums[i] != 0) {
                nums[i-num] = nums[i];
                nums[i]=0;
            }
        }
        System.out.println(Arrays.toString(nums));
    }

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值