手把手带你刷好题(牛客刷题③)

简介: 手把手带你刷好题(牛客刷题③)

重写父类方法

描述

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

输入描述:

整数

输出描述:

整数的和

题解:

Sub是Base的子类,因此继承了父类的成员变量和成员方法,成员方法中,getY()和sum()因为加了final关键字,无法被修改,子类中是直接使用,而getX()函数可以在子类中重写,我们重写为获取x的值扩大10倍。

1. import java.util.Scanner;
2. 
3. public class Main {
4. 
5. public static void main(String[] args) {
6. Scanner scanner = new Scanner(System.in);
7. while (scanner.hasNextInt()) {
8. int x = scanner.nextInt();
9. int y = scanner.nextInt();
10. Sub sub = new Sub(x, y);
11.             System.out.println(sub.sum());
12.         }
13.     }
14. 
15. }
16. 
17. class Base {
18. 
19. private int x;
20. private int y;
21. 
22. public Base(int x, int y) {
23. this.x = x;
24. this.y = y;
25.     }
26. 
27. public int getX() {
28. return x;
29.     }
30. 
31. public final int getY() {
32. return y;
33.     }
34. 
35. public final int sum() {
36. return getX() + getY();
37.     }
38. 
39. }
40. 
41. class Sub extends Base {
42. 
43. public Sub(int x, int y) {
44. super(x, y);
45.     }
46. 
47. //write your code here......
48. public int getX(){
49. return super.getX()*10;
50.     }
51. 
52. 
53. }

创建单例对象

描述

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

输入描述:

输出描述:

true

题解:

由于Singleton类是单例的,每次调用该类的getInstance()方法都将得到相同的Singleton类型实例,所以getInstance()方法的返回类型应为Singleton。预设代码中,getInstance()方法为类直接调用,所以该方法应为静态方法。在该方法中进行判断,若instance == null即不存在实例时则新建Singleton,否则直接返回已有的instance。将此处判断逻辑写入getInstance()方法中,补全getInstance()方法。

1. public class Main {
2. 
3. public static void main(String[] args) {
4. Singleton s1 = Singleton.getInstance();
5. Singleton s2 = Singleton.getInstance();
6.         System.out.println(s1 == s2);
7.     }
8. 
9. }
10. 
11. class Singleton {
12. 
13. private static Singleton instance;
14. 
15. private Singleton() {
16. 
17.     }
18. //write your code here......
19. public static Singleton getInstance() {
20. if (instance == null) {
21.         instance = new Singleton();
22.     }
23. return instance;
24. }
25. 
26. 
27. 
28. }

动态字符串

描述

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

输入描述:

一个字符串

输出描述:

修改后的字符串

题解:

在原有的字符串的基础上创建一个可以修改的新的字符串,然后利用insert方法从后三位开始插入逗号,最后将修改后的StringBuilder转变为String类进行输出。

1. import java.util.Scanner;
2. 
3. public class Main {
4. public static void main(String[] args) {
5. Scanner scanner = new Scanner(System.in);
6. String str = scanner.next();
7. //write your code here......
8.         StringBuilder newstr=new StringBuilder(str);
9. for(int i=str.length()-3;i>=0;i-=3){
10.             newstr.insert(i,',');
11.         }
12.         System.out.println(newstr.toString());
13. 
14.     }
15. }


相关文章
手把手带你刷好题(牛客刷题⑥)
手把手带你刷好题(牛客刷题⑥)
|
存储 索引 容器
手把手带你刷好题(牛客刷题⑦)
手把手带你刷好题(牛客刷题⑦)
|
缓存 Java
手把手带你刷好题(牛客刷题④)
手把手带你刷好题(牛客刷题④)
|
Java API C++
手把手带你刷好题(牛客刷题⑤)
手把手带你刷好题(牛客刷题⑤)