每日一题 错选择 及 编程题 周总结
Posted 满眼*星辰
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了每日一题 错选择 及 编程题 周总结相关的知识,希望对你有一定的参考价值。
目录
Week3
Day1
选择题
下面有关JVM内存,说法错误的是?
A 程序计数器是一个比较小的内存区域,用于指示当前线程所执行的字节码执行到了第几行,是线程隔离的
B Java方法执行内存模型,用于存储局部变量,操作数栈,动态链接,方法出口等信息,是线程隔离的
C 方法区用于存储JVM加载的类信息、常量、静态变量、即时编译器编译后的代码等数据,是线程隔离的
D 原则上讲,所有的对象都在堆区上分配内存,是线程之间共享的
正确答案: C
方法区是线程共享的,C错
以下程序的输出结果是
public class Print{
static boolean out(char c){
System.out.println©;
return true;
}
public static void main(String[] argv){
int i = 0;
for(out(‘A’);out(‘B’) && (i<2);out(‘C’)){
i++;
out(‘D’);
}
}
A ABDCBDCB
B BCDABCD
C 编译错误
D 运行错误
正确答案: A
这里调用函数后都会有boolean返回值,不会发生编译错误
再就是考察for循环的过程
下面关于程序编译说法正确的是()
A java语言是编译型语言,会把java程序编译成二进制机器指令直接运行
B java编译出来的目标文件与具体操作系统有关
C java在运行时才进行翻译指令
D java编译出来的目标文件,可以运行在任意jvm上
正确答案: C
A:.java编译成的是字节码,再被各系统的jvm翻译成本系统可以识别的机器码,这就是java一次编程多平台应用的跨平台性
B:java源文件生成的是class文件,与系统无关
C:注意字节码和机器码不是一回事 java程序在运行时字节码才会被jvm翻译成机 器码,所以说java是解释性语言
D:注意jvm的版本,好比人穿裤子,一条裤子能被任何人穿上吗
参数解析
方法一:分割字符串
import java.util.*;
public class Main{
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String s = in.nextLine();
int l = 0;
int r = 0;
boolean symbol = false;
List<String> list = new ArrayList<>();
char[] arr = s.toCharArray();
while (r < arr.length) {if(arr[r] == '/') {
symbol = true;
StringBuilder str = new StringBuilder();
while (l < r) {
str.append(arr[l]);
l++;
}
if(!str.toString().trim().equals("")) {
list.add(str.toString().trim());
}
}
if(arr[r] == ':') {
symbol = true;
StringBuilder str = new StringBuilder();
while (l < r-1) {
str.append(arr[l]);
l++;
}
if(!str.toString().trim().equals("")) {
list.add(str.toString().trim());
}
}
if(arr[r] == '\\"') {
symbol = true;
StringBuilder str = new StringBuilder();
while (l < r) {
str.append(arr[l]);
l++;
}
l++;
if(!str.toString().trim().equals("")) {
list.add(str.toString().trim());
}
}
r++;
}
StringBuilder str = new StringBuilder();
while (l < r) {
str.append(arr[l]);
l++;
}
if(!str.toString().trim().equals("")) {
list.add(str.toString().trim());
}
if(symbol) {
System.out.println(list.size());
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}else {
String[] res = s.trim().split(" ");
System.out.println(res.length);
for(int i = 0; i < res.length; i++) {
System.out.println(res[i]);
}
}
}
}
方法二:条件顺序打印
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String str = scanner.nextLine();
int count = 0;
for (int i = 0; i < str.length(); i++) {
if(str.charAt(i) == '"') {
do {
i++;
}while (str.charAt(i) != '"');
}
if (str.charAt(i) == ' ') {
count++;
}
}
System.out.println(count+1);
int font = 1;
for (int i = 0; i < str.length(); i++) {
if(str.charAt(i) == '"') {
font = font^1;
}
if(str.charAt(i) != '"' && str.charAt(i) != ' ') {
System.out.print(str.charAt(i));
}
if(font == 1 && str.charAt(i) == ' ') {
System.out.println();
}
if(font == 0 && str.charAt(i) == ' ') {
System.out.print(' ');
}
}
}
}
跳石板
方法一:动态规划
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int m = scanner.nextInt();
int[] arr = new int[m+1];
//初始化n-m的数据为最大值
for (int i = n; i < arr.length; i++) {
arr[i] = Integer.MAX_VALUE;
}
arr[n] = 0; //初始状态
for (int i = n; i < m; i++) {
//如果没有到达过这个位置,则下一轮循环
if (arr[i] == Integer.MAX_VALUE) {
continue;
}
//list来记录当前石板能跳的所有距离
List<Integer> list = piv(i);
//遍历当前石板所有能跳的距离
for (int j : list) {
//大前提,跳到的石板下标不能超过m,否则数组越界
if(i+j <= m) {
//如果跳到的石板之前没有跳到过,则直接+1
if(arr[i] == Integer.MAX_VALUE) {
arr[i+j] = arr[i] + 1;
}else { //否则就取跳到石板步数最小值
arr[i+j] = Math.min(arr[i+j],arr[i]+1);
}
}
}
}
//最后判断下标为m的石板的最小步数
if(arr[m] == Integer.MAX_VALUE) {
System.out.println(-1);
}else {
System.out.println(arr[m]);
}
}
//用来记录石板下标的所有约数
public static List<Integer> piv(int num) {
List<Integer> list = new ArrayList<>();
//这里只需要遍历到i*i <= num即可,因为两数相乘才得到num,小的乘数找到了,对应的大的乘数则为num/i
for (int i = 2; i*i <= num; i++) {
if(num % i == 0) {
list.add(i);
//这里有可能有i == num/i 的情况,所以只取一次i
if(i != num/i) {
list.add(num/i);
}
}
}
return list;
}
}
方法二:广度优先遍历
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int m = in.nextInt();
Queue<Integer> queue = new LinkedList<>();
Map<Integer,Integer> map = new HashMap<>();
map.put(n,0);
queue.add(n);
while (!queue.isEmpty()) {
int head = queue.poll();
if(head == m) {
System.out.println(map.get(head));
return;
}
List<Integer> list = yueNum(head);
for(int i = 0; i < list.size(); i++) {
int sum = head + list.get(i);
if(!map.containsKey(sum) && sum <= m) {
queue.add(sum);
map.put(sum,map.get(head)+1);
}
}
}
System.out.println(-1);
}
public static ArrayList<Integer> yueNum(int n) {
ArrayList<Integer> list = new ArrayList<>();
for (int i = 2; i <= Math.sqrt(n); i++) {
if (n % i == 0) {
list.add(i);
if (n / i != i) {
list.add(n / i);
}
}
}
return list;
}
}
Day2
选择题
____技术是一种可以使音频,视频和其他多媒体信息在 Internet 及 Intranet 上以实时的,无需下载等待的方式进行播放的技术。
A 流媒体
B 多媒体
C 复合媒体
D 音视媒体
正确答案:A
流媒体技术是一种可以使音频,视频和其他多媒体信息在 Internet 及 Intranet 上以实时的,无需下载等待的方式进行播放的技术。
下列语句正确的是:
A 形式参数可被字段修饰符修饰
B 形式参数不可以是对象
C 形式参数为方法被调用时真正被传递的参数
D 形式参数可被视为local variable
正确答案:D
A:形式参数只能被final修饰
B:形式参数可以是对象
C:形式参数被调用时被传递的是实际参数的拷贝
D:local variable:局部变量
给定代码:
public class SwitchTest{//1
public static void main(String[] args) {//2
System.out.println("value="+switchit(4));//3
}//4
public static int switchit(int x) {
int j=1;
switch (x) {
case 1:j++;
case 2:j++;
case 3:j++;
case 4:j++;
case 5:j++;
default:j++;
}
return j+x;
}
第三行将输出什么?
A value=6
B value=8
C value=3
D value=5
E value=4
正确答案:B
不加break的话,switch会从第一次进入case语句的地方,一直向下执行完。
计算日期到天数转换
import java.util.*;
public class Main{
public static int iConverDateToDay(int year,int month,int day) {
int[] monthDay = {31,28,31,30,31,30,31,31,30,31,30,31};
int sum = 0;
if(year < 0 || month < 0 || month > 12) {
return -1;
}
if(year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
monthDay[1] = 29;
}
if(day > monthDay[month-1]) {
return -1;
}
for(int i = 0; i < month-1; i++) {
sum += monthDay[i];
}
sum += day;
以上是关于每日一题 错选择 及 编程题 周总结的主要内容,如果未能解决你的问题,请参考以下文章