目录
选择题模块
1. 以下对继承的描述错误的是(A)
A:一个子类只能继承一个父类(接口:一个类可以实现多个接口)
2. 在Java中,一个类(B)
这道题和上面的题师出同门。
3. 以下不是Object 类的方法的是(D)
这道题我们可以看一下Object的源码,可以看出hasNext不是Object里面的方法,而是迭代器Iterator的方法。
4. Test.main() 函数执行后的输出是(D)
public class Test { public static void main(String [] args){ System.out.println(new B().getValue()); } static class A{ protected int value; public A(int v) { setValue(v); } public void setValue(int value){ this.value = value; } public int getValue(){ try{ value++; return value; } catch(Exception e){ System.out.println(e.toString()); } finally { this.setValue(value); System.out.println(value); } return value; } } static class B extends A{ public B() { super(5); setValue(getValue() - 3); } public void setValue(int value){ super.setValue(2 * value); } } }
考查点:继承+方法重写
编程题模块
1.Fibonacci数列
题目描述

思路分析
代码实现
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNextInt()) {
int N = scanner.nextInt();
int[] arr = new int[47];
arr[0] = 0;
arr[1] = 1;
for (int i = 2; i < 47; i++) {
arr[i] = arr[i - 1] + arr[i - 2];
}
for (int i = 0; i < 47; i++) {
if (N == arr[i]) {
System.out.println(0);
break;
} else {
min(N, arr);
break;
}
}
}
}
private static void min(int N, int[] arr) {
int min = 0;
for (int i = 2; i < 47; i++) {
if (N > arr[i] && N < arr[i + 1]) {
min = (N - arr[i]) < (arr[i + 1] - N) ? (N - arr[i]) : (arr[i + 1] - N);
}
}
System.out.println(min);
}
}上面这个是我的思路解出来的,看到了有大佬是这样做的,很强。
import java.util.Scanner;// 注意类名必须为 Main, 不要有任何 package xxx 信息public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int n =scanner.nextInt();int f1 = 0;int f2 = 1;while(f2<n){int f3 = f2+f1;f1=f2;f2= f3;}//循环结束 f1<n<=f2int min = Math.min(n-f1,f2-n);System.out.println(min);//两行代码解决问题}}
2.合法括号序列判断
题目描述

思路分析

代码实现
import java.util.*;
public class Parenthesis {
public boolean chkParenthesis(String A, int n) {
// Stack<Character> stack = new Stack<>();
// char[] array = A.toCharArray();
// for (int i = 0; i < array.length; i++) {
// if (array[i] == '(') {
// stack.push(array[i]);
// } else if (array[i] == ')') {
// if (stack.isEmpty()) {
// return false;
// } else if (stack.peek() == '(') {
// stack.pop();
// } else {
// return false;
// }
// }
// }
// return stack.isEmpty();
if (n % 2 != 0) {
return false;
}
Stack<Character> stack = new Stack<>();
char[] array = A.toCharArray();
for (int i = 0; i < array.length; i++) {
if(array[i] == '('){
stack.push(array[i]);
}else if (array[i] == ')'){
if(stack.isEmpty()){
return false;
}else if(stack.peek() == '('){
stack.pop();
}else{
return false;
}
}
}
return stack.isEmpty();
}
}
3.两种排序方法
题目描述

思路分析

代码实现
import java.util.Scanner;import java.io.*;// 注意类名必须为 Main, 不要有任何 package xxx 信息public class Main {public static void main(String[] args) throws Exception {//BufferReader 从字符流中读取文本并且缓存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 (isSortLength(str)) {System.out.println("lengths");} else if (isSortZiDian(str)) {System.out.println("lexicographically");} 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++) {//如果当前字符串长度大于后一个字符串长度,说明排序混乱,返回falseif (str[i].length() > str[i + 1].length()) {return false;}}return true;}}//****重点//代码中使用compareTo方法//用来比较大小的 a.compareTo(b) 如果a比b大输出1 a=b输出0 a比b小输出-1
4.求最小公倍数
题目描述
思路分析

代码实现
import java.util.Scanner;// 注意类名必须为 Main, 不要有任何 package xxx 信息public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);while (scanner.hasNextInt()) {int A = scanner.nextInt();int B = scanner.nextInt();System.out.println((A*B)/bigNum(A, B));}}//最大公约数private static int bigNum(int a, int b) {if (a == b) {return a;}if(a<b){int tmp = a;a=b;b=tmp;}int r;while((r=a%b)>0){a=b;b=r;}return b;}}
我自己还有一种解法,仅供大家参考>>>
import java.util.Scanner;// 注意类名必须为 Main, 不要有任何 package xxx 信息public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);while (scanner.hasNextInt()) {int A = scanner.nextInt();int B = scanner.nextInt();System.out.println(smallNum(A, B));//System.out.println((A*B)/bigNum(A, B));}}private static int smallNum(int a, int b) {//最小公倍数for (int i = 1; i < a * b; i++) {if (i % a == 0 && i % b == 0) {return i;}}return a * b;}}
版权声明:本文为weixin_53939785原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。







