一、选择题
1、单选:对于abstract声明的类,下面说法正确的是()
A. 可以实例化
B. 不可以被继承
C. 子类为abstract
D. 只能被继承
E. 可以被抽象类继承
答案:E
解析:抽象类不仅可以被继承,也可以使用抽象类创建一个变量。
2、多选题: 下面哪些类实现或继承了 Collection 接口()
A. HashMap B. ArrayList C. Vector D. Iterator
答案:B,C
Iterator是一个迭代器,他是一个类
二、计算糖果
🍂题目解析:
根据输入描述和示例中的输入数字来看,示例中的4个数字,1 = A - B,-2 = B - C,3 = A + B,4 = B + C。 所以这个题就是一个纯粹的数学问题。
🍂代码示例:
public class Main{
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int a = scan.nextInt();
int b = scan.nextInt();
int c = scan.nextInt();
int d = scan.nextInt();
int A = (a+c)/2;
int B1 = (c-a)/2;
int B2 = (b+d)/2;
int C = (d-b)/2;
if(B1 != B2){
System.out.println("No");
}else{
System.out.println(A+" "+B1+" "+C);
}
}
}
三、进制转换
🍂题目解析:
这道题,就是需要找到十进制数M与需要转换的进制数N之间的关系。如示例中给出的十进制数7,转换为二进制数,转换成的二进制数为111,这个二进制7和十进制7之间的关系为:1*2^2+1*2^1+1*2^0。将一个10进制的数,转换成几进制就是需要从1开始,每一位乘以进制数的相应次方。直至与10进制数相等。
🍂代码思路
例如十进制123,我们在代码中创建一个字符串s从0~F,因为输入描述中说到进制数N(2 ≤ N ≤ 16),所以这个字符串中的最大数字就是16进制的F。然后使用循环,将10进制数字M与需要转换的进制数N进行模运算(M%N),使用模的值作为查找字符串元素的下标值,将当前10进制数的最低为找到之后,将这个元素放到一个数组中,然后使用(M/N)得到新的M,在通过(M%N)找到新的M的最低位对应的N进制的数字,依次类推。
🍂代码示例
public class Main{
//进制转换
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int m = scan.nextInt();
int n = scan.nextInt();
String s = "0123456789ABCDEF";
StringBuffer stringBuffer = new StringBuffer();
boolean flag = false;//使用flag记录输入的m是不是一个负数
//如果是负数,则先转为正数,然后将flag的值改为true
if(m<0){
m = -m;
flag = true;
}
while(m!=0){
stringBuffer.append(s.charAt(m%n));
m=m/n;
}
//将进制转换完成之后,通过flag判断这个数为负数,给转换完的字符串拼接一个"-"号
if(flag){
stringBuffer.append("-");
}
//由于转换的时候,得到的数字与所需要的是相反的所以需要逆置
stringBuffer.reverse();
System.out.println(stringBuffer);
}
}