文章目录
- 一、单选
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 二、编程
- 1. 求最小公倍数
- 解法:
- 代码:
- 2. 两种排序方法
- 解法:
- 代码:
一、单选
1.
正确答案:B
2.
正确答案:A
继承具有传递性
3.
正确答案:C
数组不是原生类,是根据基本数据类型来定义的
4.
正确答案:D
public static void main(String [] args){System.out.println(new B().getValue());//先调用静态内部类的函数}static class A{protected int value;public A(int v) {setValue(v);// 5}public void setValue(int value){// 22 34this.value = value;// 10 22 16 34}public int getValue(){try{value++;// 11 17return value;// 11 17} catch(Exception e){System.out.println(e.toString());} finally {this.setValue(value);// 调用的是被子类重写的 setValue 方法 值为22 34System.out.println(value);// 22 34}return value;}}static class B extends A{public B() {super(5);//然后进入父类的构造 值是10setValue(getValue() - 3);// 上面返回的是11 8}public void setValue(int value){// 5 11 8 17super.setValue(2 * value);// 由于 B 进行重新了 setValue 所有调用的是 B 的 setValue// 10 22 16 34}}
5.
正确答案:C
6.
如何跳出数组的循环
正确答案:A
7.
正确答案:C
可以包含多个类
8.
正确答案:D
9.
正确答案:A
先执行静态代码块
10.
正确答案:D
二、编程
1. 求最小公倍数
原题链接
解法:
最小公倍数 = 两数之积除以最大公约数
这里使用碾转相除法进行最大公约数的求解:
即 a与b的最大公约数可以转化为:
a、b之间的余数为两者之间最小的数之间的公约数
所以对于输入的两个数进行连续求余,直到余数为0,求余的分母即为结果
代码:
public class Main {public static void main(String[] args) {Scanner in = new Scanner(System.in);int m = in.nextInt();int n = in.nextInt();int mn = gdc(m,n);System.out.println(m*n/mn);}public static int gdc(int m, int n) {if(m == n) {return m;}if(m < n) {int tmp = m;m = n;n = tmp;}int r;while((r = m % n) > 0) {m = n;n = r;}return n;}
}
2. 两种排序方法
原题链接
解法:
将接收的字符串都放到String数组中
利用string的compareTo方法来按ascii比较字符串字典序排序
利用string的length方法来比较字符串的长度排序
代码:
public class Main {public static void main(String[] args) throws IOException {//BufferedReader 从字符流中读取文本并且缓存BufferedReader bi = new BufferedReader(new InputStreamReader(System.in));int n = Integer.parseInt(bi.readLine());String[] str = new String[n];for (int i = 0; i < n; i++) {str[i] = bi.readLine();}//判断if (isSortLength(str) && isSortZidian(str)) {System.out.println("both");}else if (isSortZidian(str)) {System.out.println("lexicographically");}else if (isSortLength(str)){System.out.println("lengths");}else {System.out.println("none");}}public static boolean isSortZidian(String[] str) {for (int i = 0; i < str.length - 1; i++) {//用当前的字符串和后一个字符串比较,如果字典序大于后一个,说明排序混乱,直接返回 falseif (str[i].compareTo(str[i+1]) > 0) {return false;}}return true;}public static boolean isSortLength(String[] str) {for (int i = 0; i < str.length - 1; i++) {if (str[i].length() > str[i+1].length()) {return false;}}return true;}
}