首页 > 编程语言 >Java 入门练习:26 - 30

Java 入门练习:26 - 30

时间:2024-08-09 19:24:23浏览次数:16  
标签:26 Java scanner int 30 String 字符串 public Scanner

JAVA26 实现接口

描述

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

输入描述

两个整数

输出描述

两个整数中的最大值

示例1

输入:

1 3

输出:

3

解答

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

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

输入:

1 2

输出:

12

解答

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

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

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

输入:

hellonowcoder

输出:

h,ell,ono,wco,der

解答

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

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

输入:

o

输出:

3

示例2

输入:

a

输出:

0

解答

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

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;
    }
}

标签:26,Java,scanner,int,30,String,字符串,public,Scanner
From: https://blog.csdn.net/paofuluolijiang/article/details/140880069

相关文章

  • Java 入门练习:16 - 20
    JAVA16数组遍历描述将用户输入的六个数字填入数组并找出数组中最大值和最小值输入描述随机输入的6个整数输出描述输出数组中的最大值,最小值(最大值最小值之间用空格隔开。若有多个最大值或最小值,输出一次即可,如样例2所示)示例1输入:135246输出:61示例2......
  • Java中数组算法的学习
    数组的算法目录数组的算法概述冒泡排序选择排序排序算法库StreamAPI概述简单排序:冒泡排序、选择排序、插入排序高级排序:快速排序、归并排序、希尔排序相关算法知识:划分、递归、二分查找冒泡排序原理:从第一个数据开始,与第二个数据相比较,如果第二个数据小于第一个数据,......
  • Java基础——注解1——注解的定义与使用
    ......
  • java6
    我学习了常见API知识java.lang.Math提供数学常量和方法,如基本的数学运算(加、减、乘、除)、三角函数、对数、幂运算等。常用方法:Math.abs(x):返回x的绝对值。Math.max(a,b):返回a和b中的较大值。Math.min(a,b):返回a和b中的较小值。Math.sqrt(x):返回x的平方根。Math.pow(a,b......
  • Android开发基础07-掌握Java语言
    Android开发广泛使用Java作为编程语言,熟练掌握Java语言是十分必要的。1.基础入门知识a.设置开发环境安装JDK(JavaDevelopmentKit):JDK是进行Java开发的必备工具,务必下载安装并配置相应的环境变量。安装IDE(IntegratedDevelopmentEnvironment):推荐使用IntelliJIDEA、E......
  • ISO26262 Part 9 之 相关失效分析DFA/FFI的适用场景
    1.标准要求通过分析其潜在原因或引发因素,确认设计中充分体现了要求的独立性和免于干扰;如有必要,定义安全措施,以减轻可能的相关失效;免于干扰FFI:用于证明分配了不同ASIL等级的,或者无ASIL等级和有ASIL等级的要素可以共存;免于干扰和不存在共因失效DFA:用于证明在进行ASIL等......
  • ISO26262 Part6 之 免于干扰FFI
    1.标准要求在AnnexD中,有解释避免软件要素之间的相互干扰,主要包括三块:Timingandexecution时序和执行—死锁;—活锁;—执行时间的不正确分配;或—软件要素间的不正确同步。Memory存储—内容损坏;—数据不一致(例如,由于数据获取期间发生更新);—堆栈上......
  • 今日Java练习:选择题挑战
    题目选自牛客网1.假设num已经被创建为一个ArrayList对象,并且最初包含以下整数值:[0,0,4,2,5,0,3,0]。执行下面的方法numQuest(),数组num会变成?privateList<Integer>nums;//precondition:nums.size()>0//numscontainsIntegerobjectspublicvoidnumQuest(){int......
  • Java中的8种基本数据类型及其存储方式
    文章目录基本数据类型存储方式整型数据浮点型数据char类型数据布尔类型数据其他数据类型的转换自动转换强制转换基本数据类型Java属于C类语言,有8种数据类型数据类型byteshortintlongfloatdoublecharboolean数据大小8bit16bit32bit64bit32bit64bit8bit/24bit/32bit......
  • 面向忙碌的-Java-开发者的-Python-教程-全-
    面向忙碌的Java开发者的Python教程(全)原文:PythonfortheBusyJavaDeveloper协议:CCBY-NC-SA4.0一、语言让我们从了解Python与Java的不同之处开始我们的Python之旅。在下一章深入研究Python的语法之前,我将帮助你设置Python。Python是什么?Python是一种“......