前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java 入门练习(26 - 30)

Java 入门练习(26 - 30)

作者头像
村雨遥
发布2022-09-01 15:16:37
2870
发布2022-09-01 15:16:37
举报
文章被收录于专栏:JavaParkJavaPark

JAVA26 实现接口

描述

已知接口 Comparator,内部定义了 max 函数,用于返回两个整数中的最大值。请定义该接口的实现类,使得 main 方法中的比较逻辑可以正确执行,要求实现类的名称为 ComparatorImpl。

输入描述

两个整数

输出描述

两个整数中的最大值

示例1

输入:

代码语言:javascript
复制
1 3

输出:

代码语言:javascript
复制
3

解答

创建一个类来实现 Comparator 接口,然后重写 max() 方法即可。

代码语言:javascript
复制
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Comparator comparator = new ComparatorImpl();

        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNextInt()) {
            int x = scanner.nextInt();
            int y = scanner.nextInt();
            System.out.println(comparator.max(x, y));
        }
    }

}

interface Comparator {
    /**
     * 返回两个整数中的最大值
     */
    int max(int x, int y);
}

class ComparatorImpl implements Comparator {

    public int max(int x, int y) {
        if (x > y) {
            return x;
        }
        return y;
    }
}

JAVA27 重写父类方法

描述

父类 Base 中定义了若干 get 方法,以及一个 sum 方法,sum 方法是对一组数字的求和。请在子类 Sub 中重写 getX() 方法,使得 sum 方法返回结果为 x*10+y

输入描述

整数

输出描述

整数的和

示例1

输入:

代码语言:javascript
复制
1 2

输出:

代码语言:javascript
复制
12

解答

注意观察,在父类中 getY()sum() 方法都是加了 final 关键字的,所以代表我们在继承自父类的子类中都是无法修改这两个方法的。而要实现将 x 增大 10 倍,那么就只能操作 getX() 方法了,在这个方法中将 x 放大 10 倍即可。

代码语言:javascript
复制
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNextInt()) {
            int x = scanner.nextInt();
            int y = scanner.nextInt();
            Sub sub = new Sub(x, y);
            System.out.println(sub.sum());
        }
    }

}

class Base {

    private int x;
    private int y;

    public Base(int x, int y) {
        this.x = x;
        this.y = y;
    }

    public int getX() {
        return x;
    }

    public final int getY() {
        return y;
    }

    public final int sum() {
        return getX() + getY();
    }

}

class Sub extends Base {

    public Sub(int x, int y) {
        super(x, y);
    }

    public int getX() {
        return super.getX() * 10;
    }
}

JAVA28 创建单例对象

描述

Singleton 类是单例的,每次调用该类的 getInstance() 方法都将得到相同的实例,目前该类中这个方法尚未完成,请将其补充完整,使得 main() 函数中的判断返回真(不考虑线程安全)。

输入描述

输出描述

true

解答

通过观察,我们发现代码中已经有了构造方法,我们只需要补充该类的 getInstance() 方法即可。由于要创建单例对象,所以每次调用 getInstance() 方法时,都应该得到的是同一个 Singleton 类型的实例。此时需要注意,要先对该对象判断是否为 null,是就创建新的,不是则返回当前 instance

代码语言:javascript
复制
public class Main {

    public static void main(String[] args) {
        Singleton s1 = Singleton.getInstance();
        Singleton s2 = Singleton.getInstance();
        System.out.println(s1 == s2);
    }

}

class Singleton {

    private static Singleton instance;

    private Singleton() {

    }

    public static Singleton getInstance() {
        if (instance == null) {
            instance = new Singleton();
        }
        return instance;
    }


}

JAVA29 动态字符串

描述

将一个由英文字母组成的字符串转换成从末尾开始每三个字母用逗号分隔的形式。

输入描述

一个字符串

输出描述

修改后的字符串

示例1

输入:

代码语言:javascript
复制
hellonowcoder

输出:

代码语言:javascript
复制
h,ell,ono,wco,der

解答

要注意一点,实际上 String 是不可变的,所以我们需要先将其转换为可变的 StringBuilder。然后从后往前开始,每三位遍历一次,然后将逗号 , 插入其中,从而得到新的字符串,最后将新的字符串转换为 String 类型即可。注意,要在 StringBuilder 类型的字符串中插入 ,,需要使用到 insert() 方法。

代码语言:javascript
复制
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String str = scanner.next();

        StringBuilder newstr = new StringBuilder(str);
        for (int i = str.length() - 3; i >= 0; i -= 3) {
            newstr.insert(i, ',');
        }
        System.out.println(newstr.toString());
    }
}

JAVA30 统计字符串中字母出现次数

描述

给定一个字符串,随机输入一个字母,判断该字母在这个字符串中出现的次数

输入描述

任意一个字母

输出描述

字母在字符串中出现次数

示例1

输入:

代码语言:javascript
复制
o

输出:

代码语言:javascript
复制
3

示例2

输入:

代码语言:javascript
复制
a

输出:

代码语言:javascript
复制
0

解答

要统计字符串中某字母出现的次数,那么遍历该字符串,然后利用字母和字符串的每一个字符相比较,如果相同则计数加 1,直到字符串末尾。注意,要获取字符串第 index 位的字符,需要使用 charAt(index) 方法。

代码语言:javascript
复制
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        String string = "H e l l o ! n o w c o d e r";
        Scanner scanner = new Scanner(System.in);
        String word = scanner.next();
        scanner.close();
        System.out.println(check(string, word));
    }

    public static int check(String str, String word) {
        char ch = word.charAt(0);
        int count = 0;
        for (int i = 0; i < str.length(); i++) {
            if (str.charAt(i) == ch) {
                count++;
            }
        }
        return count;
    }
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-06-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • JAVA26 实现接口
    • 描述
      • 输入描述
      • 输出描述
    • 示例1
      • 解答
      • JAVA27 重写父类方法
        • 描述
          • 输入描述
          • 输出描述
        • 示例1
          • 解答
          • JAVA28 创建单例对象
            • 描述
              • 输入描述
              • 输出描述
            • 解答
            • JAVA29 动态字符串
              • 描述
                • 输入描述
                • 输出描述
              • 示例1
                • 解答
                • JAVA30 统计字符串中字母出现次数
                  • 描述
                    • 输入描述
                    • 输出描述
                  • 示例1
                    • 示例2
                      • 解答
                      领券
                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档