“高级Java编程复习指南:深入理解并发编程、JVM优化与分布式系统架构“




 我的个人主页

接下来我将方享四道由易到难的编程题,进入我们的JavaSE复习之旅。

1:大小写转换------题目链接

解题思路:

 在ASCII码表中,⼤写字⺟A-Z的Ascii码值为65- 90,⼩写字⺟a-z的Ascii码值为97-122。每个字 ⺟⼤⼩写之间的关系为:⼩写字⺟的ascii码值 - 32 = ⼤写字⺟的ascii码值。因此可以利⽤这⼀ 特性,先判断字⺟为⼤写还是⼩写,之后根据 ⼤⼩写决定如何进⾏转换。

参考代码:

​
public class Main {public static void main(String[] args) {Scanner in = new Scanner(System.in);while(in.hasNextLine()){String line = in.nextLine();if (Character.isLowerCase(line.charAt(0))){//if (line.charAt(0) >= 97 && line.charAt(0) <= 122){char c = (char) (line.charAt(0) - 32);System.out.println(c);}else{char c = (char) (line.charAt(0) + 32);System.out.println(c);}​

调试结果如图所示:

2. 斐波那契数列------题目链接
解题思路:
由题意可知,斐波那契数列的的第⼀项和第⼆项为1,后续项的⼤⼩为前⼀项和前两项的和,
第三项=第⼀项+第⼆项;
第四项=第⼆项+第三项;
以此类推。
故可以考虑使⽤递归的思路去求第n项的⼤⼩。
例如求第5项时,⼤致图解如下:

参考代码 :

public class Main2{public static void main(String[] args) {Scanner in = new Scanner(System.in);int ret = fib(in.nextInt());System.out.println(ret);}public static int fib(int i) {int arr[] = new int[i+1];//这⾥让的返回值为了⽅便理解,我们数组的0下标并不做任何有意义的计算(相当于舍弃
了),⽅便后续返回结果的时候直接返回i下标的值即可。arr[0] = 0;arr[1] = 1;arr[2] = 1;for (int j = 3; j <= i; j++) {arr[j] = arr[j - 1] + arr[j - 2];}return arr[i];}

调试结果如图所示: 

3. 删除公共字符 ------题目链接

解题思路:

这道题的意思是让我们在字符串1(暂记为str1)中删除字符串2(暂记为str2)中包含的字⺟
(注意:空格不会计算在内)此时同学们可能会疑惑⼀个问题,需要注意⼤⼩写问题嘛?再
仔细阅读题⽬的意思,单纯的只是让咱们把str1中包含的str2的字⺟删掉,并不涉及到不区分
⼤⼩写的问题,所以我们还是要区分⼤⼩写问题的。我们可以对str1中的字符串进⾏遍历,
借助⼀个StringBuilder对象进⾏结果的拼接,获取到每个字符后(空格不计,直接进⾏拼
接)去在str2当中去看看有没有相同的字⺟,如果没有,则表⽰不⽤删除,并将其拼接
StringBuilder对象中,如果有,则不进⾏拼接。

参考代码:

1 import java.util.Scanner;
2
3 
4 public class Main {
5     public static void main(String[] args) {
6      Scanner in = new Scanner(System.in);
7         // 注意 hasNext 和 hasNextLine 的区别
8         while (in.hasNextLine()) { // 注意 while 处理多个 case
9         String str1 = in.nextLine();
10         String str2 = in.nextLine();
11         System.out.println(func(str1,str2));
12         }
13     }
14
15     private static String func(String str1, String str2) {
16         StringBuilder stringBuilder = new StringBuilder();
17         for (int i = 0; i < str1.length(); i++) {
18         char c = str1.charAt(i);
19         boolean flag = true;
20         if (c != ' '){
21         for (int j = 0; j < str2.length(); j++) {
22         if (c == str2.charAt(j)){
23             flag = false;
24                 break;
25         }
26     }
27 }
28         if (flag == true){
29             stringBuilder.append(c);
30     }
31 }
32         return String.valueOf(stringBuilder);
33     }
34 }

调试结果:

 解题方法二:

我们可以遍历str1这个字符串,拿到每个字符,看str2当中是否包含当前字符,如果不包含,
难么就拼接到StringBuilder对象当中。直到拿到最后的结果。
难点:
1. String本⾝不包含,如何判断⼀个字符在不在当前字符串当中的⽅法。只有⼀个contains
⽅法。
该⽅法原型如下:
public boolean contains(CharSequence s) {return indexOf(s.toString()) >= 0;}
我们可以看到参数并不是char类型。那么如何处理呢?请看如下代码:
if(!str2.contains(ch+"")) {sb.append(ch);}
这⾥只要字符拼接上⼀个空的字符串即可达到⽬标.
参考代码:
public class Main {public static void main(String[] args) {Scanner in = new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseString str1 = in.nextLine();String str2 = in.nextLine();String ret = func(str1,str2);System.out.println(ret);}}
public static String func(String str1,String str2) {StringBuilder sb = new StringBuilder();for(int i = 0;i < str1.length();i++) {char ch = str1.charAt(i);if(!str2.contains(ch+"")) {sb.append(ch);}}return sb.toString();}}
4. 输⼊两个字符串a和b,字符串内容为⼆进制数字,求两个字符串相加的结果, 加法计算⽅法以⼆进制⽅式计算,并返回对应的字符串结果。要求程序尽可能 的⾼效。
题目链接
输⼊描述:
输⼊两个字符串,如"1101", "1100"
输出描述: "11001"
解题思路:
1. 正常数字相加运算⽅式为:
124
456 +
------
580
从后往前进⾏计算,进位也是从后往前。所以,我们应该把输⼊的字符串进⾏逆序。
2. "124" + "456" 这两个字符串逆置后进⾏相加的进位
"421"
"654" +
---------
085 最后将结果字符串逆置即可
3. 进位只有⼀种情况,对应位上都是字符1.

参考代码:

import java.util.Scanner;public class Main{public static void main(String[] args) {Scanner in = new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNext()) { // 注意 while 处理多个 caseString a = in.next();//String b = in.next();System.out.println(add(a, b));}}public static String add(String a, String b) {StringBuilder sb = new StringBuilder();int lenA = a.length();int lenB = b.length();int max = Math.max(lenA, lenB);StringBuilder stringBuilderA = new StringBuilder(a).reverse();StringBuilder stringBuilderB = new StringBuilder(b).reverse();// 0110 1111boolean isCarry = false;for (int i = 0; i < max; i++) {//这⾥没定义谁最⼤,可能字符串A先⾛完,也可能字符串B先⾛完//只需要补0就⾏char aChar = i >= lenA ? '0' : stringBuilderA.charAt(i);char bChar = i >= lenB ? '0' : stringBuilderB.charAt(i);if (aChar == '1' && bChar == '1') {sb.append(isCarry ? '1' : '0');isCarry = true;} else if (aChar == '0' && bChar == '0') {sb.append(isCarry ? '1' : '0');isCarry = false;} else {sb.append(isCarry ? '0' : '1');}}if (isCarry) sb.append("1");return sb.reverse().toString();}
}

调试结果:

 "今日JavaSE复习圆满收官,编程之路再启新程!" 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/885546.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

设备租借系统(源码+文档+部署+讲解)

本文将深入解析“设备租借系统”的项目&#xff0c;探究其架构、功能以及技术栈&#xff0c;并分享获取完整源码的途径。 系统概述 本项目名称为设备租借系统&#xff0c;是对企业内部设备进行信息化管理的系统&#xff0c;可以实现设备的借用、归还、状态跟踪等功能&#xff…

使用 PageHelper 在 Spring Boot 项目中实现分页查询

目录 前言1. 项目环境配置1.1 添加 PageHelper 依赖1.2 数据库和 MyBatis 配置 2. 统一的分页响应类3. 使用 PageHelper 实现分页查询3.1 Service 层分页查询实现3.2 PageHelper 分页注意事项 4. 控制层调用示例5. 常见问题与解决方案5.1 java.util.ArrayList cannot be cast t…

【C++】C++移动语义、左值右值、左值引用右值引用、移动构造函数、std::move、移动赋值操作符

二十五、C移动语义、左值和右值、左值引用右值引用、移动构造函数、std::move、移动赋值操作符 本部分讨论一些更高级的C特性&#xff1a;C移动语义。但是讲移动语义之前我们得先了解什么左值右值、左值引用和右值引用。 1、C的左值和右值、左值引用和右值引用左值是有地址的…

【国内中间件厂商排名及四大中间件对比分析】

国内中间件厂商排名 随着新兴技术的涌入&#xff0c;一批国产中间件厂商破土而出&#xff0c;并在短时间内迅速发展&#xff0c;我国中间件市场迎来洗牌&#xff0c;根据市占率&#xff0c;当前我国中间件厂商排名依次为&#xff1a;东方通、宝兰德、中创股份、金蝶天燕、普元…

Android自启动管控

1. 自启动管控需求来源 自启动、关联启动、交叉启动、推送启动等现象的泛滥除了对个人信息保护带来隐患外&#xff0c;还会导致占用过多的系统CPU和内存资源&#xff0c;造成系统卡顿、发热、电池消耗过快&#xff1b;还可能引入一些包含“恶意代码”的进程在后台隐蔽启动&…

C++上机实验|多态性编程练习

1.实验目的 (1)理解多态性的概念。 (2)掌握如何用虚函数实现动态联编 (3)掌握如何利用虚基类。 2.实验内容 设计一个飞机类 plane,由它派生出歼击机类fighter和轰炸机类 bomber,歼击机类fighter 和轰炸机类bomber 又共同派生出歼轰机(多用途战斗机)。利用虚函数和虚基类描述…

ctfshow(328)--XSS漏洞--存储型XSS

Web328 简单阅读一下页面。 是一个登录系统&#xff0c;存在一个用户管理数据库。 那么我们注册一个账号&#xff0c;在账号或者密码中植入HTML恶意代码&#xff0c;当管理员访问用户管理数据库页面时&#xff0c;就会触发我们的恶意代码。 思路 我们向数据库中写入盗取管理员…

Kubernetes的概述与架构

Kubernetes 的概述 Kubernetes 是一个可移植、可扩展的开源平台&#xff0c;用于管理容器化的工作负载和服务&#xff0c;方便进行声明式配置和自动化。Kubernetes 拥有一个庞大且快速增长的生态系统&#xff0c;其服务、支持和工具的使用范围广泛。 Kubernetes 这个名字源于…

crond 任务调度 (Linux相关指令:crontab)

相关视频链接 crontab 进行 定时任务 的设置 概述 任务调度&#xff1a;是指系统在某个时间执行的特定的命令或程序 任务调度的分类&#xff1a; 1.系统工作&#xff1a;有些重要的工作必须周而复始地执行。如病毒扫描等。 2.个别用户可能希望执行某些程序&#xff0c;比如…

408最后冲刺阶段,怎么做题才能考到120+?

C哥专业提供——计软考研院校选择分析专业课备考指南规划 重要性排序如下&#xff1a;真题占据首位&#xff0c;紧随其后的是王道模拟题&#xff0c;王道书与题目则紧随其后&#xff0c;而408统考配套习题&#xff08;高教版&#xff09;与之大致相当。 真题&#xff0c;无疑…

uniapp上拉刷新下拉加载

方法一&#xff1a; z-paging 的组件库&#xff1a; show-loading-more-no-more-view"false" 该属性控制是否显示 "加载更多" 或 "没有更多" 的提示。如果设为 false&#xff0c;则不会显示这些提示。如果设为 true&#xff0c;当数据加载完毕…

Java I/O(输入/输出)——针对实习面试

目录 Java I/O&#xff08;输入/输出&#xff09;什么是Java I/O流&#xff1f;字节流和字符流有什么区别&#xff1f;什么是缓冲流&#xff1f;为什么要使用缓冲流&#xff1f;Java I/O中的设计模式有哪些&#xff1f;什么是BIO&#xff1f;什么是NIO&#xff1f;什么是AIO&am…

AJAX 全面教程:从基础到高级

AJAX 全面教程&#xff1a;从基础到高级 目录 什么是 AJAXAJAX 的工作原理AJAX 的主要对象AJAX 的基本用法AJAX 与 JSONAJAX 的高级用法AJAX 的错误处理AJAX 的性能优化AJAX 的安全性AJAX 的应用场景总结与展望 什么是 AJAX AJAX&#xff08;Asynchronous JavaScript and XML…

本地保存mysql凭据实现免密登录mysql

本地保存mysql凭据 mysql加密登录文件简介加密保存mysql用户的密码到本地凭据 mysql加密登录文件简介 要在 mysql客户端 上连接 MySQL 而无需在命令提示符上输入用户名和口令&#xff0c;下列三个位置可用于存储用户的mysql 凭证来满足此要求。 配置文件my.cnf或my.ini /etc…

图形几何之美系列:仿射变换矩阵(二)

“ 在几何计算、图形渲染、动画、游戏开发等领域&#xff0c;常需要进行元素的平移、旋转、缩放等操作&#xff0c;一种广泛应用且简便的方法是使用仿射变换进行处理。相关的概念还有欧拉角、四元数等&#xff0c;四元数在图形学中主要用于解决旋转问题&#xff0c;特别是在三维…

Jmeter的安装,设置中文,解决乱码问题

1.Jmeter安装 1-Jmeter如何下载 1---我这里提供一个下载快的方式 https://www.123684.com/s/lWZKVv-4jiav?提取码:4x4y 2---Jmeter官网下载地址 Apache JMeter - Download Apache JMeter 2-配置java环境 1---下载javaJDK 官方下载地址 https://www.oracle.com/java/techno…

【Uniapp】Uniapp Android原生插件开发指北

前言 在uniapp开发中当HBuilderX中提供的能力无法满足App功能需求&#xff0c;需要通过使用Andorid/iOS原生开发实现时&#xff0c;或者是第三方公司提供的是Android的库&#xff0c;这时候可使用App离线SDK开发原生插件来扩展原生能力。 插件类型有两种&#xff0c;Module模…

微信小程序——用户隐私保护指引填写(详细版)

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…

reg注册表研究与物理Hack

reg注册表研究与物理Hack 声明&#xff1a;内容的只是方便各位师傅学习知识&#xff0c;以下网站只涉及学习内容&#xff0c;其他的都与本人无关&#xff0c;切莫逾越法律红线&#xff0c;否则后果自负。 目录 reg注册表研究与物理HackWindows注册表修改注册表实现应用程序开机…

[论文粗读][REALM: Retrieval-Augmented Language Model Pre-Training

引言 今天带来一篇检索增强语言模型预训练论文笔记——REALM: Retrieval-Augmented Language Model Pre-Training。这篇论文是在RAG论文出现之前发表的。 为了简单&#xff0c;下文中以翻译的口吻记录&#xff0c;比如替换"作者"为"我们"。 语言模型预训练…