每日小结---------day2

1、面向对象的主要特征

封装性:体现在对类的说明上。把一些数据、方法封装为一个整体,形成一个个独立的模块。用户在使用的时候只能够看到它的外部特性。

继承:子类可以继承父类的数据、方法。还可以在这基础上进行修改、扩充。

多态性:即不同的对象在接收同一消息时会产生不同的动作。

2、final关键字

final关键字的作用:

修饰类——此时这个类就不能被继承,同时这个类当中的所有成员方法会被隐式的指定为final方法。

修饰方法——这个方法就不能够被修改。(类当中的private方法会被隐式的指定为final方法)

修饰变量——如果这个变量是基本数据类型的话,那么它初始化之后就不能够被修改类;如果这个变量是引用类型的话,那么就不能够让其指向其他对象了。

注意的点:

虽然当变量是引用类型时不能够指向其他对象,但是其指向的对象的内容是可以改变的。

3、static关键字

static修饰的成员变量和成员方法可以通过类名直接访问。

4、编程题1

【组队竞赛】

牛牛举办了一次编程比赛,参加比赛的有3*n个选手,每个选手都有一个水平值a_i.现在要将这些选手进行组队,一共组成n个队伍,即每个队伍3人.牛牛发现 队伍的水平值等于该队伍队员中第二高水平值。

例如:

一个队伍三个队员的水平值分别是3,3,3.那么队伍的水平值是3

一个队伍三个队员的水平值分别是3,2,3.那么队伍的水平值是3

一个队伍三个队员的水平值分别是1,5,2.那么队伍的水平值是2

为了让比赛更有看点,牛牛想安排队伍使所有队伍的水平值总和最大

思路:

如果要寻找其中的第二高水平值,那么首先要对数组进行排序,这里就可以使用函数Arrays.sort()

接着便是考虑如何分组的问题。我们可以把第一个元素和倒数两个元素分为一组;依次进行分组。

那么在此基础上只需要找到每组第二高元素所在数组中的位置,并发现其规律;然后把这些第二高的元素相加即可。

具体编程如下:

import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int[] a = new int[3*n];
        long sum = 0;
        //给数组添加元素
        for (int i = 0; i < 3*n ; i++) {
            a[i] = scanner.nextInt();
        }
        //对数组元素进行排序
        Arrays.sort(a);
        //对数组中元素进行分组,依次取第一个元素和最后两个元素构成一组。然后取其中第二高元素相加
        for (int i = 0; i < n ; i++) {
            //取第二高的元素可以根据以下公式
            sum = sum + a[a.length-2*(i+1)];
        }
        System.out.println(sum);
    }
}

5、编程题2

【删除公共字符】输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符 串变成”Thy r stdnts.”

思路:

遍历两个字符串,寻找相同元素。找到就把第一个字符串中该元素置为""。

具体编程如下:

import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String str1 = scanner.nextLine();
        String str2 = scanner.nextLine();
        //遍历字符串2
        for (int i = 0; i < str2.length() ; i++) {
            //遍历字符串1
            for (int j = 0; j <str1.length() ; j++) {
                //让字符串2的每一个元素与字符串1的每一个元素一一比较,相同把相应位置置为""
                if (str2.charAt(i) == str1.charAt(j)) {
                    str1 = str1.replaceFirst(str1.charAt(j)+"","");
                }
            }
        }
        System.out.println(str1);
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值