单选题
1.以下()代码,能够对数组正确初始化(或者是默认初始化)(D)
A. int[] a;
B. a={1,2,3,4,5};
C.int[] a = new int[5]{1,2,3,4,5};
D.int[] a = new int[5];
解析:C选项正确的写法是 int[] a = new int[]{1, 2, 3, 4, 5}; 或者 int[] a = {1, 2, 3, 4, 5};。
2.给定如下所示的JAVA代码,则运行时,会产生(B)类型的异常。
String s = null;
s.concat("abc");
A.ArithmeticException
B.NullPointerException
C.IOException
D.ClassNotFoundException
编程题
3.请实现无重复数字的升序数组的二分查找
给定一个元素升序的、无重复数字的整型数组nums和一个目标值target,写一个函数搜索nums中的target,如果目标值存在返回下标(下标从0开始),否则返回-1。
数据范围:0≤len(nums)≤2×10^5, 数组中任意值满足|val|≤10^9
进阶:时间复杂度O(logn),空间复杂度 O(1)
补充说明
数组元素长度在[0,10000]之间。
数组每个元素都在[-9999,9999]之间。
示例1
输入
[-1,0,3,4,6,10,13,14],13
输出
6
说明
13 出现在nums中并且下标为 6
题解
import java.util.*;
public class Solution {
public int search(int[] nums, int target) {
int left = 0, right = nums.length - 1;
// 当左指针小于等于右指针时,继续循环
while (left <= right) {
// 计算中间位置
int mid = (right - left) / 2 + left;
// 获取中间位置的元素
int num = nums[mid];
// 如果中间元素等于目标值,返回中间位置
if (num == target) {
return mid;
} else if (num > target) {
// 如果中间元素大于目标值,将右指针移动到中间位置的左侧
right = mid - 1;
} else {
// 如果中间元素小于目标值,将左指针移动到中间位置的右侧
left = mid + 1;
}
}
// 如果循环结束仍未找到目标值,返回-1
return -1;
}
}
4.字母大小写转换。
KiKi想完成字母大小写转换,有一个字符,判断它是否为大写字母,如果是,将它转换成小写字母;反之则转换为大写字母。
输入描述
多组输入,每一行输入一个字母。
输出描述
针对每组输入,输出单独占一行,输出字母的对应形式。
示例 1
输入
a
A
Z
输出
A
a
z
题解
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner in = new Scanner(System.in);
while(in.hasNext()){
String c= in.nextLine();
if(c.charAt(0)>='A'&&c.charAt(0)<='Z'){
System.out.println((char)(c.charAt(0)+32));
}else{
System.out.println((char)(c.charAt(0)-32));
}
}
}
}
5.牛牛的通勤。
牛牛的通勤路上有两种选择,要么走路,要么打车,牛牛走路的速度是1m/s。打车的速度的10m/s,但是打车需要等出租车10s,请你计算牛牛想尽快到公司应该选择打车还是走路。
输入描述
输入一个正整数,表示牛牛到公司的距离。
输出描述
输出牛牛想尽可能快到公司应该选择打车还是走路,走路的话输出w,打车的输出v。
保证答案一定不会出现两个方案时间一样的情况。
题解
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner in = new Scanner(System.in);
int x =in.nextInt();
if(x<10+x/10){
System.out.println('w');}
else{
System.out.println('v');
}
}
}