一、选择题模块
- 下面关于构造方法的说法不正确的是(B)——知识点:构造方法可以进行重载
- 以下程序的输出结果为:(D)
class Base{ public Base(String s){ System.out.print("B"); } } public class Derived extends Base{ public Derived (String s) { System.out.print("D"); } public static void main(String[] args){ new Derived("C"); } }
知识点:子类帮父类构造须调用super()关键字我自己是这样想的:
【main 方法是个静态方法,而Derived类不是个静态内部类,所以不能直接初始化。】
-
此处的基类就是父类.【这就和上面的第二对应起来了,常见派生类对象时,先要构造父类的构造函数调用super()】
-
java语言的下面几种数组复制方法中,哪个效率最高?(B) A for 循环逐一复制 B System.arraycopy C Array.copyOf D 使用clone方法
所以排序如下:
System.arraycopy>clone>Arrays.copyOf>for 至于具体的原因: 1.主要认为System.arraycopy是在系统底层操作,本地方法; 2.克隆主要都不太了解 3.Arrays工具类被for快就对了,不然怎么当工具使
-
软件定义阶段,任务是确定软件开发工作必须完成的目标,确定工程的可行性;软件开发阶段,任务是具体完成设计和实现定义阶 段所定义的软件,通常包括总体设计、详细设计、编码和测试;软件维护阶段,任务是使软件在运行中持久地满足用户的需要。需求分析属于软件定义阶段的任务。
-
下面选项中,哪些是interface中合法方法定义?() A public void main(String [] args); B private int getSum(); C boolean setFlag(Boolean [] test); D public float get(int x);
此题为多选题,应该选 A C D. 接口内的方法不能用private修饰。
-
下面哪些类实现或继承了 Collection 接口? A HashMap B ArrayList C Vector D Iterator
-
二、编程题模块
1.字符串中找出连续最长的数字串
描述
读入一个字符串str,输出字符串str中的连续最长的数字串
输入描述:
个测试输入包含1个测试用例,一个字符串str,长度不超过255。
输出描述:
在一行内输出str中里连续最长的数字串。
思路分析
具体代码
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String str = scan.nextLine();
String cur = "";
String ret = "";
for (int i = 0; i < str.length(); i++) {
char ch = str.charAt(i);
if (ch <= '9' && ch >= '0') {
cur += ch + "";
} else {
if (cur.length() > ret.length()) {
ret = cur;
}
cur = "";
}
}
if (i == str.length() && cur.length() > ret.length()) {
ret = cur;
}
System.out.println(ret);
}
}
2.数组中出现次数超过一半的数字
描述
给一个长度为 n 的数组,数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。
例如输入一个长度为9的数组[1,2,3,2,2,2,5,4,2]。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。
数据范围:n \le 50000n≤50000,数组中元素的值 0 \le val \le 100000≤val≤10000
要求:空间复杂度:O(1)O(1),时间复杂度 O(n)O(n)
输入描述:
保证数组输入非空,且保证有解
思路分析
具体代码
import java.util.Arrays;
public class Solution {
public int MoreThanHalfNum_Solution(int [] array) {
//思路一
Arrays.sort(array);
int count = 0;
int mid = array.length / 2;
for (int i = 0; i < array.length; i++) {
if (array[i] == array[mid]) {
count++;
}
}
if (count > mid) {
return array[mid];
}
return 0;
//思路二
// res -- 候选者,初始化为数组第一个值,
int res = array[0];
// count -- 票数
int count = 0;
for (int i = 0; i < array.length; i++) {
if (array[i] == res) {
count++;
} else {
// 票数为0换人
count--;
if (count == 0) {
res = array[i];
count++;
}
}
}
return res;
}
}
3.计算糖果
描述
A,B,C三个人是好朋友,每个人手里都有一些糖果,我们不知道他们每个人手上具体有多少个糖果,但是我们知道以下的信息:
A – B, B – C, A + B, B + C. 这四个数值.每个字母代表每个人所拥有的糖果数.
现在需要通过这四个数值计算出每个人手里有多少个糖果,即A,B,C。这里保证最多只有一组整数A,B,C满足所有题设条件。输入描述:
输入为一行,一共4个整数,分别为A – B,B – C,A + B,B + C,用空格隔开。 范围均在-30到30之间(闭区间)。
输出描述:
输出为一行,如果存在满足的整数A,B,C则按顺序输出A,B,C,用空格隔开,行末无空格。 如果不存在这样的整数A,B,C,则输出No
思路分析
具体代码
import java.util.Scanner;
public class Main {
public static void main(String[] arg) {
Scanner scan = new Scanner(System.in);
while (scan.hasNext()) {
int x = scan.nextInt();
int y = scan.nextInt();
int x1 = scan.nextInt();
int y1 = scan.nextInt();
int A = (x + x1) >> 1;
int B = (y + y1) >> 1;
int C = (y1 - B);
if ((x == A - B) && (y == B- C) && (x1 == A + B) && (y1 == B + C)) {
System.out.println(A + " " + B + " " + C);
}else {
System.out.println("No");
}
}
}
}
4.进制转换
描述
给定一个十进制数M,以及需要转换的进制数N。将十进制数M转化为N进制数
输入描述:
输入为一行,M(32位整数)、N(2 ≤ N ≤ 16),以空格隔开。
输出描述:
为每个测试实例输出转换后的数,每个输出占一行。如果N大于9,则对应的数字规则参考16进制(比如,10用A表示,等等)
思路分析
具体代码
代码一:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (in.hasNextInt()) {
int m = in.nextInt();
int n = in.nextInt();
StringBuilder s = new StringBuilder();
String table = "0123456789ABCDEF";
//用来存储2-16进制中所有的可能
boolean flag = false; //标记下有没有加负号
if(m < 0){
m = -m;
flag = true;
//本身是负数,我们改为正数了。标记下
}
if(m == 0){
s.append('0');
}
while (m != 0) {
s.append(table.charAt(m % n));
m /= n;
}
if(flag){
s.append('-');
}
s.reverse();
System.out.println(s);
}
}
}
代码二(使用库函数,偷懒的办法)
import java.util.Scanner;
import java.math.BigInteger;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String m = in.next();
int n = in.nextInt();
BigInteger bi = new BigInteger(m, 10);
System.out.println(bi.toString(n).toUpperCase());
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/119541.html