第一题:实现接口
🍂题目描述
已知接口Comparator,内部定义了max函数,用于返回两个整数中的最大值。请定义该接口的实现类,使得main方法中的比较逻辑可以正确执行,要求实现类的名称为ComparatorImpl。
输入描述:
两个整数
输出描述:
两个整数中的最大值
示例
输入:1 3
输出:3
题解
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 { @Override public int max(int x,int y){ return x > y ? x : y; } }
第二题:重写父类方法
题目描述
父类Base中定义了若干get方法,以及一个sum方法,sum方法是对一组数字的求和。请在子类 Sub 中重写 getX() 方法,使得 sum 方法返回结果为 x*10+y
输入描述:
整数
输出描述:
整数的和
示例
输入:1 2
输出:12
题解
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(){ //子类重写getX return super.getX() * 10; } }
第三题:创建单例对象
题目描述
Singleton类是单例的,每次调用该类的getInstance()方法都将得到相同的实例,目前该类中这个方法尚未完成,请将其补充完整,使得main()函数中的判断返回真(不考虑线程安全)。
输入描述:
无
输出描述:
true
题解
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() { //创建单例对象 return instance; } }
第四题:动态字符串
题目描述
将一个由英文字母组成的字符串转换成从末尾开始每三个字母用逗号分隔的形式。
输入描述:
一个字符串
输出描述:
修改后的字符串
示例
输入: hellonowcoder
输出: h,ell,ono,wco,der
题解
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()); //转变成String类输出 } }
第五题:判断字符串中字母出现次数
题目描述
给定一个字符串,随机输入一个字母,判断该字母在这个字符串中出现的次数
输入描述:
任意一个字母
输出描述:
字母在字符串中出现次数
示例
输入: o
输出: 3
输入: a
输出: 0
题解
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){ return str.length() - str.replace(word,"").length(); } }