蓝桥杯基本操作和运算

devtools/2024/10/23 20:32:33/

文章目录

  • 1.基本运算
  • 2.循环--进制转换/最大公约数
    • 2.1进制转换
    • 2.2求解最大公约数
  • 3.数组与字符串
  • 4.常用的API
  • 5.快速读写模版

蓝桥杯基本操作和运算

10-22号正式开始准备蓝桥杯的比赛,准备参加这个大学B组的Java的赛项

1.基本运算

首先就是基本的输入输出:

  • system.out.print();-----进行不换行的输出
  • system.out.println();-----进行换行的输出(这个同样也是我们的IDEA里面的默认输出的方式,最常使用)
  • system.out.printf();--------进行格式化的输出,下面会有这个对应的题目进行说明

对于输入,我们使用的是Scanner进行的;

  • Scanner in = new Scanner(System.in);
  • int a=in.nextInt();-----读取到一般的整形的数据
  • double b=in.nextDouble();----读取到double类型的数据
  • long c = in.nextLong();—最不经常使用,如果读取的整形的数值比较大,可能会用到这个;
  • String str=in.next();----------读取字符的时候到了空位置就会停止读取
  • String str2=in.nextLine();--------一次就会读取一整行的操作,不会遇到空格就停止

下面的这个就是需要我们对于这个温度进行转换:我们读取的是一个整形的数据,这个时候乘上9/5的时候需要进行转换,因为如果直接写这个就会是除法操作,但是我们加上0之后,一个数据变成小数,这个进行的就是小数运算;

image-20241022091036408

下面的这个是使用我们的printf进行这个格式化输出的问题:我们的这个是需要在前面补上0(如果这个位数不够的情况下),因此我们使用这个printf进行格式化的输出,%02d:%02d就是进行这个时间的格式化输出;

最后的这个计算,因为我们是使用的这个nextInt进行读取的,因此这个时候需要进行转换,强制类型转换为这个double的,当然如果我们直接使用这个nextDouble进行读取,就不需要进行强制类型转换;

image-20241022091421677

2.循环–进制转换/最大公约数

2.1进制转换

下面的这个就是进制之间的转换:下面的这个是9进制转换为10进制的情况;

我们需要定义一个sum用来存储每一次计算之后的这个数据,最后我们是把这个sum进行打印输出即可;

这个数据是2022,我们要把这个(2022)这个9进制的转换为10进制的数据,这个时候需要对于这个数据的最低位取出来,分别进行这个90—91----9^2操作以此类推下去,直到这个剩下余数小于0才停止;

image-20241022094749234

2.2求解最大公约数

求解最大公约数:我们首先需要使用这个nextInt方法得到两个输入的数据,接着求的两个数据里面的最小值—我们可以使用三目运算符求解最小值,也可以使用这个math里面的这个min方法求解这个最小值,其中这个三目运算符我们自己也是可以封装出来一个方法;

如果这个输入的数据除以i都是没有余数的,这个时候我们就把这个数据进行输出即可(这个地方我们可以使用for循环进行判断,因为我们知道这个最大公约数一定会比这个输入的两个数据里面的最小值还要更小,因此我们可以从这个两个数据里面的最小值作为初始的数值,然后从这个min值开始不断地减减,一直到1位置,如果两个数据除以这个i都是0,就证明这个就是公约数,而且我们一旦遇到一个满足条件的,我们就会使用这个break关键字对于这个过程进行终止,这时候得到的这个公约数就是最大的公约数);

image-20241022095700488

3.数组与字符串

这个里面主要是对于这个数组的创建,数组的使用以及这个字符串的相关操作:求解字符串的长度,求解这个字符串的子串,对于这个字符串进行分割操作,以及计算这个对应字符的下标,全部转成大写等等一系列的操作;

我们下面的两个案例就是冒泡排序;

下面的这个代码可以划分为四个步骤:

1.初始化的部分:就是定义数组,初始化这个数组的大小;

2.赋值:对于这个数组里面的每一个元素,我们都需要使用这个nextInt方法进行赋值操作;

3.排序:使用冒泡的方法进行排序,这个时候如果需要的话,需要进行交换位置的操作;

4.使用for循环,对于这个冒泡排序之后的结果进行打印输出;

image-20241022104559395

4.常用的API

这个常用的API主要是我们的Math和这个Integer里面的一些方法:

parseInt(String s,int radix);

例如下面的这个情况:

String str1="1010";
int num1=Integer.parseInt(str1,2);
//这个就是把我们的二进制的这个字符串str1转换为我们的十进制的整数,并且把这个转换之后的结果进行打印输出String str2="ff";
int num2=Integer.parseInt(str2,16);
//这个就是把我们的这个16进制的字符串ff进行转换为十进制的整数并且打印输出;

toString方法—把这个整数转换为对应的进制的字符串进行表示:

int num=255;
String str1=Integer.toString(num,2);//转换为二进制的字符串
String str2=Integer.toString(num,8);//转换为八进制的字符串
String str3=Integer.toString(num,10);//转换为16进制的字符串

其他的就是这个Math里面的相关的函数,例如这个abs,min,pow之类的,这个地方就不演示了;

5.快速读写模版

快速读写就是我们输入的数据很多,如果我们还是使用这个scanner进行读取的操作,这个时候的效率就会降低,因此我们自己设计了一套快速读写的方法,提高多组输入的时候的读写效率;

import java.util.*;
import java.io.*;
//这个方法的效率高主要是因为原来的scanner和这个system需要到这个IO设备上面的文件上面里面去进行数据的读取,但是我们的这个是创建一个缓冲区,读取的时候一次性把这个文件里面的内容放到我们的缓冲区里面去,然后每一次进行裁剪数据,直接从缓冲区里面对于这个数据进行读取,因此这个可以提高效率;
//这个新定义的这个类的里面对应的方法和我们原来使用的方法的名字和功能都是一样的;public class Main
{//PrintWriter就是快速写的操作public static PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(System.out)));public static Read in = new Read();public static void main(String[] args) throws IOException{// 写代码(下面的这个仅仅是一个案例,具体情况需要修改)int n=in.nextInt();System.out.println(n);int[] arr=new int[n];for(int i=0;i<n;i++){arr[i]=in.nextInt();}for(int i=0;i<n;i++){out.print(arr[i]);if(i<n-1){out.print(" ");}}out.close();}
}class Read // 自定义快速读入
{StringTokenizer st = new StringTokenizer("");//BufferedReader就是把这个IO设备里面的数据搞到我们的缓冲区里面去,然后进行裁剪BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));String next() throws IOException{while(!st.hasMoreTokens()){//bf.readLine()就是从缓冲区里面取出来一行数据,进行裁剪//StringTokenizer就是把这个缓冲区里面的字符串转换为我们想要的数据类型st = new StringTokenizer(bf.readLine());//加上while循环是为了解决多行输入的问题的}return st.nextToken();}String nextLine() throws IOException{return bf.readLine();}int nextInt() throws IOException{return Integer.parseInt(next());}long nextLong() throws IOException{return Long.parseLong(next());}double nextDouble() throws IOException{return Double.parseDouble(next());}
}

http://www.ppmy.cn/devtools/128242.html

相关文章

线性可分支持向量机的原理推导【补充知识部分】9-11极小极大化问题 公式解析

本文是将文章《线性可分支持向量机的原理推导》中的公式单独拿出来做一个详细的解析&#xff0c;便于初学者更好的理解。在主文章中&#xff0c;有一个部分是关于补充拉格朗日对偶性的相关知识&#xff0c;此公式即为这部分里的内容。 公式 9-11 是通过引入拉格朗日乘子法将一个…

python多线程案例——多线程爬取小说

多线程案例——多线程爬取小说 生产者——————产生URL消费者兼生产者——下载小说消费者——————合并小说主函数——————函数入口 注意事项 这里我们使用了队列queue来储存URL&#xff0c;需要提取导入一下队列&#xff0c;我们在主函数中让队列实例化&#xff0…

【C++语言】深入学习C++要修炼的内功

一、进程虚拟地址空间区域划分 我们先来分析以下代码&#xff1a; int gdata1 10; int gdata2 0; int gdata3;static int gdata4 11; static int gdata5 0; static int gdata6;int main() {int a 12;int b 0;int c;static int e 14;static int f 0;static int g;retu…

unity学习笔记-安装与部署

unity学习笔记-安装与部署 unity & visual studio下载unityvisual studio 创建工程项目内的布局介绍初始化项目各目录介绍1. 场景视图&#xff08;Scene&#xff09;2. 游戏视图&#xff08;Game&#xff09;3. 层次结构视图&#xff08;Hierarchy&#xff09;4. 检查器视图…

#每日一题#自动化 2024年10月

#每日一题#自动化 2024年10月 1、深拷贝和浅拷贝的区别是什么&#xff1f; 参考答案&#xff1a; 深拷贝是将对象本身复制给另一个对象。这意味着如果对对象的副本进行更改时不会影响原对象。在 Python 中&#xff0c;我们使用 deepcopy&#xff08;&#xff09;函数进行深拷贝…

rootless模式下测试istio Ambient功能

前置需求 rootless k8s测试环境搭建&#xff1a;https://blog.csdn.net/longtds/article/details/142916697 istio Ambient istio安装 通过加速下载istio release包&#xff0c;解压并安装为ambient模式 wget https://mirror.ghproxy.com/https://github.com/istio/istio/r…

ESP32-S3学习笔记:分区表(Partition Table)的二进制分析

目录 一、参考资料 二、准备工作 三、开始分析 一、参考资料 用于研究的官方示例代码&#xff1a;esp-idf-v5.3\examples\storage\partition_api\partition_find参考的官方文档&#xff1a;ESP-IDF编程指南&#xff1a;分区表 二、准备工作 用VS Code打开示例代码&#xf…

Java最全面试题->Java基础面试题->JavaSE面试题->面向对象面试题

文章目录 面向对象1.面向对象和面向过程的区别2.面向对象有哪些特性3.多态的实现机制4.Java语言有哪些特点5.JDK、JRE、JVM三者的联系和区别 面向对象 下边是我自己整理的面试题&#xff0c;基本已经很全面了&#xff0c;想要的可以私信我&#xff0c;我会不定期去更新思维导图…