Java——输入,循环,BigInteger,拷贝,排序
读取输入
打印输出到“ 标准输出流”(即控制台窗口)是一件非常容易的事情,只要 调用System.out.println 即可。然而,读取“ 标准输人流” System.in就没有那么简单了。要想通 过控制台进行输人,首先需要构造一个Scanner对象,并与“ 标准输人流” System.in关联。nextLine() 和 nextInt() 是 Scanner 类的常用方法,用于读取用户输入。
nextInt()
读取下一个整数,但不会读取整数后的换行符。
Scanner in=new Scanner(System.in);int a =in.nextInt();int b=in.nextInt();int c =in.nextInt();

nextLine()
读取整行输入(包括空格和换行符),会消耗当前行的所有剩余字符。
String a=in.nextLine();String b=in.nextLine();String c=in.nextLine();
// System.out.println(d);System.out.println(a);System.out.println(b);System.out.println(c);

常见问题:输入被跳过
当连续使用 nextInt() 和 nextLine() 时,可能出现 nextLine() 直接读取空字符串的情况。
原因:nextInt() 读取整数后,换行符 \n 仍留在输入缓冲区中,nextLine() 会直接读取这个换行符作为输入。
int d=in.nextInt();nexLine 前边有其他输入,会多吃一空格,如果前面需要有其他输入,就在中间多吃一次,即in。nextLine
// in.nextLine();String a=in.nextLine();String b=in.nextLine();String c=in.nextLine();System.out.println(d);System.out.println(a);System.out.println(b);System.out.println(c);

解决方案
方案一:在 nextInt() 后手动读取换行符
int d=in.nextInt();nexLine 前边有其他输入,会多吃一空格,如果前面需要有其他输入,就在中间多吃一次,即in。nextLinein.nextLine();String a=in.nextLine();String b=in.nextLine();String c=in.nextLine();System.out.println(d);System.out.println(a);System.out.println(b);System.out.println(c);
方案二:统一使用 nextLine() 读取输入
循环
for-each
for-each 循环也被叫做增强型 for 循环,它为遍历数组或集合提供了一种更为简洁的方式
int[] arr= {1,5,7,10};for(int x:arr) {System.out.println(x);}String[] arr2= {"aa","bb","cc"};for(String x:arr2) {System.out.println(x);}int[][] arr3= {{1,2},{3,4}};for(int[] x:arr3) {for(int z:x){System.out.println(z);}}

switch
switch 语句是许多编程语言中常用的一种条件控制结构,它允许根据一个表达式的值来选择执行多个代码块中的某一个。在 Java 中,switch 语句可以接受 byte、short、char、int、enum 类型以及 String 类型的表达式。
int day = 3;switch (day) {case 1:System.out.println("星期一");break;case 2:System.out.println("星期二");break;case 3:System.out.println("星期三");break;case 4:System.out.println("星期四");break;case 5:System.out.println("星期五");break;case 6:System.out.println("星期六");break;case 7:System.out.println("星期日");break;default:System.out.println("无效的日期");}
switch击穿
“switch 击穿” 一般指的是在 switch 语句里,没有使用 break 语句来终止 case 块的执行,从而使得程序继续执行下一个 case 块的情况。
在多数编程语言中,switch 语句依据表达式的值来匹配对应的 case 标签。当找到匹配的 case 后,就会开始执行该 case 块中的代码。要是这个 case 块里没有 break 语句,程序不会跳出 switch 语句,而是会接着执行下一个 case 块中的代码,这就是 “击穿” 现象。
public class SwitchFallthroughExample {public static void main(String[] args) {int num = 2;switch (num) {case 1:System.out.println("数字是 1");case 2:System.out.println("数字是 2");case 3:System.out.println("数字是 3");default:System.out.println("不是 1、2、3");}}
}

BigInteger
java.math.BigInteger 类能够处理任意大小的整数。它提供了丰富的方法来进行大整数的算术、逻辑和比较运算。
// 创建 BigInteger 对象BigInteger num1 = new BigInteger("12345678901234567890");BigInteger num2 = new BigInteger("98765432109876543210");// 加法运算BigInteger sum = num1.add(num2);System.out.println("两数之和: " + sum);// 乘法运算BigInteger product = num1.multiply(num2);System.out.println("两数之积: " + product);// 比较大小int compareResult = num1.compareTo(num2);if (compareResult < 0) {System.out.println(num1 + " 小于 " + num2);} else if (compareResult > 0) {System.out.println(num1 + " 大于 " + num2);} else {System.out.println(num1 + " 等于 " + num2);}

拷贝
依据复制方式的不同,可分为浅拷贝和深拷贝。
浅拷贝
浅拷贝仅复制对象的一层属性。要是对象的属性是引用类型,那么浅拷贝只会复制引用,而不会复制对象本身,这就导致原对象和拷贝对象可能会共享一部分数据。
// 浅int[] arr2= {4,7,8,9};int[] arr4=arr2;System.out.println(Arrays.toString(arr2));System.out.println(Arrays.toString(arr4));
深拷贝
深拷贝会递归地复制对象的所有属性,包含引用类型的属性。这样原对象和拷贝对象就不会共享任何数据,对一方的修改不会影响到另一方
int[] arr2= {4,7,8,9};int[] arr5 =new int[arr2.length];for(int i=0;i<arr5.length;i++) {arr5[i]=arr2[i];}arr5[0]=100;System.out.println(Arrays.toString(arr2));System.out.println(Arrays.toString(arr5));

排序
public class ArraySorting {public static void main(String[] args) {// 整数排序Integer[] arr7 = {10, 1, 7, 2, 4};// 使用 Lambda 表达式实现降序排序Arrays.sort(arr7, (a, b) -> b - a);// 或者使用 Collections.reverseOrder() 实现降序排序// Arrays.sort(arr7, Collections.reverseOrder());System.out.println(Arrays.toString(arr7));// 字符串排序String[] arr8 = {"aaa", "vvv", "ccc", "azz", "azc"};Arrays.sort(arr8);System.out.println(Arrays.toString(arr8));Person x1 = new Person(20, 168, "李华");Person x2 = new Person(19, 185, "赵雨");Person x3 = new Person(24, 178, "周H");Person[] arr10 = {x1, x2, x3};// 按年龄升序排序Arrays.sort(arr10, (a, b) -> a.age - b.age);System.out.println(Arrays.toString(arr10));}
}
package com.qcby.基础类型;public class Person {int age;int height;String name;public Person(int age, int height, String name) {super();this.age = age;this.height = height;this.name = name;}@Overridepublic String toString() {return "Node [age=" +age + ", height=" + height + ", name=" + name + "]";}}
整数数组排序:
创建了一个 Integer 类型的数组 arr7。
使用 Arrays.sort 方法进行排序。Arrays.sort 方法有多个重载版本,这里使用的是接收一个数组和一个 Comparator 比较器的版本。(a, b) -> b - a 是一个 Lambda 表达式,它定义了一个比较器,实现了降序排序。如果 b - a 大于 0,则 b 应该排在 a 前面。也可以使用 Collections.reverseOrder() 来实现降序排序。
最后使用 Arrays.toString 方法将排序后的数组转换为字符串并打印。
字符串数组排序:
创建了一个 String 类型的数组 arr8。
直接调用 Arrays.sort 方法对数组进行排序。由于 String 类实现了 Comparable 接口,所以 Arrays.sort 方法会按照 String 的自然顺序(字典序)进行排序。
同样使用 Arrays.toString 方法打印排序后的数组。
自定义类对象数组排序:
创建了三个 Person 对象 x1、x2、x3,并将它们存储在数组 arr10 中。
使用 Arrays.sort 方法和 Lambda 表达式 (a, b) -> a.age - b.age 对数组进行排序。这个 Lambda 表达式定义了一个比较器,按照 Person 对象的 age 属性进行升序排序。如果 a.age - b.age 小于 0,则 a 应该排在 b 前面。
最后打印排序后的数组。
相关文章:
Java——输入,循环,BigInteger,拷贝,排序
读取输入 打印输出到“ 标准输出流”(即控制台窗口)是一件非常容易的事情,只要 调用System.out.println 即可。然而,读取“ 标准输人流” System.in就没有那么简单了。要想通 过控制台进行输人,首先需要构造一个Scann…...
Elasticsearch客户端工具初探--kibana
1 Kibana简介 Kibana是Elastic Stack(ELK)中的可视化工具,用于对Elasticsearch中存储的数据进行搜索、分析和可视化展示。它提供了直观的Web界面,支持日志分析、业务监控、数据探索等功能,广泛应用于运维监控、安全分析…...
ollama在win10安装、使用、卸载
目录 前置: 1 下载ollama 2 安装 3 配置环境变量,设置模型存储位置 4 使用 5 卸载 前置: 1 在打算安装ollama之前,需要先检查电脑当前状态是否能使用ollama。确认条件满足再进行安装操作。 2 https://github.com/ollama/…...
查看iphone手机的使用记录-克魔实战
如何查看 iOS 设备近期的详细使用数据 在日常使用手机时,了解设备的运行状态和各项硬件的使用情况可以帮助分析耗电情况、优化应用使用方式。iOS 设备提供了一些数据记录,能够显示应用的启动和关闭时间、后台运行情况,以及应用在使用过程中调…...
[Lc5_dfs+floodfill] 简介 | 图像渲染 | 岛屿数量
目录 0.floodfill算法简介 1.图像渲染 题解 2.岛屿数量 题解 之前我们在 bfs 中有介绍过[Lc15_bfsfloodfill] 图像渲染 | 岛屿数量 | 岛屿的最大面积 | 被围绕的区域,现在我们来看看 dfs 又是如何解决的呢 0.floodfill算法简介 floodfill算法又叫洪水灌溉或者…...
AI-Sphere-Butler之如何使用腾讯云ASR语音识别服务
环境: AI-Sphere-Butler WSL2 英伟达4070ti 12G Win10 Ubuntu22.04 腾讯云ASR 问题描述: AI-Sphere-Butler之如何使用腾讯云ASR语音识别服务,本地硬件配置不高的情况,建议使用云服务商的ASR 解决方案: 1.登…...
Qwen最新多模态大模型:Qwen2.5-Omni介绍与快速入门
一、模型技术突破:重新定义多模态交互 近日,Qwen2.5-Omni正式发布了! 这是Qwen系列中全新的旗舰级端到端多模态大模型,专为全面的多模式感知设计,无缝处理包括文本、图像、音频和视频在内的各种输入,同时…...
【Golang】第十一弹------反射
🎁个人主页:星云爱编程 🔍所属专栏:【Go】 🎉欢迎大家点赞👍评论📝收藏⭐文章 长风破浪会有时,直挂云帆济沧海 目录 1.反射基本介绍 2.反射重要的函数和概念 3.反射应用场景 4.反…...
C#里使用libxl的对齐/边框/颜色
一份好的EXCEL文件,通道会有不同的颜色和边框来表示。 以便表示一些重要的信息,这样才能让人们一眼就看到需要关注的信息。 如下面所示: 要显示上面的内容,需要使用下面的例子: private void button12_Click(object sender, EventArgs e){var book = new ExcelBook();if…...
算法刷题记录——LeetCode篇(1.4) [第31~40题](持续更新)
更新时间:2025-03-29 算法题解目录汇总:算法刷题记录——题解目录汇总技术博客总目录:计算机技术系列博客——目录页 优先整理热门100及面试150,不定期持续更新,欢迎关注! 32. 最长有效括号 给你一个只包…...
软考中级-软件设计师信息安全模块考点解析
一、防火墙技术 内部网络是 安全的可信赖的外部网络是不安全的不可信赖的外部网络和内部网络之间有一个DMZ隔离区, 可以在DMZ隔离区中搭建服务:例如:WEB服务器 安全排序:内网>DMZ>外网 三个发展阶段: 包过滤防…...
【蓝桥杯】每日练习 Day 16,17
前言 接下来是这两天的题目(昨天主播打完模拟赛感觉身体被掏空所以没有写题目的总结),只有三道题。 一道并查集,一道单调栈和一道单调队列。 奶酪 分析 这是一道模板题(连通块),只讲思路。 …...
相机租赁网站基于Spring Boot SSM
目录 摘要 1. 项目背景与意义 2. 功能需求分析 3. 技术需求分析 3.1开发语言:Java13。 3.2其他技术: 4. 系统设计与实现 5. 市场分析 6. 创新点与优势 7. 预期成果与展望 摘要 随着摄影技术的普及和摄影爱好者数量的增加&#…...
树莓派超全系列文档--(14)无需交互使用raspi-config工具其一
无需交互使用raspi-config工具其一 无需交互的 raspi-configSystem optionsWireless LANAudioPasswordHostnameBoot/Auto loginNetwork at bootSplash screenPower LEDBrowser Display optionsUnderscanScreen blankingVNC resolutionComposite 文章来源: http://r…...
Linux驱动开发--IIC子系统
1.1 简介 I2C 是很常见的一种总线协议, I2C 是 NXP 公司设计的, I2C 使用两条线在主控制器和从机之间进行数据通信。一条是 SCL(串行时钟线),另外一条是 SDA(串行数据线),这两条数据线需要接上拉电阻,总线空闲的时候 …...
如何应对硬件测试覆盖率不足导致量产故障
硬件测试覆盖率不足导致的量产故障是硬件制造领域的一大痛点。要有效应对,必须从提高测试覆盖率、优化测试方案、引入风险管理机制三个方面入手。其中,优化测试方案尤为关键,应从产品设计阶段开始,通过精确的测试用例规划、详细的…...
JS数组复制方法及注意事项
在 JavaScript 中,直接赋值数组会导致引用传递(修改一个会影响另一个),因此需要创建数组的副本。以下是几种常见的浅拷贝方法: 1. 使用 slice() 方法 javascript const originalArray [1, 2, 3]; const copiedArra…...
【附JS、Python、C++题解】Leetcode面试150题(12)多数问题
一、题目 169. 多数元素 给定一个大小为 n 的数组 nums ,返回其中的多数元素。 多数元素是指在数组中出现次数大于[n/2]的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。 示例 1: 输入:nums [3,2,3] 输出&a…...
Centos7 安装 TDengine
Centos7 安装 TDengine 1、简介 官网: https://www.taosdata.com TDengine 是一款开源、高性能、云原生的时序数据库(Time Series Database, TSDB), 它专为物联网、车联网、工业互联网、金融、IT 运维等场景优化设计。同时它还带有内建的缓…...
[特殊字符]《Curve DAO 系统学习目录》
本教程旨在系统学习 Curve DAO 项目的整体架构、核心机制、合约设计、治理逻辑与代币经济等内容,帮助开发者全面理解其设计理念及运作方式。 目录总览: 1. Curve 项目概览 • 1.1 Curve 是什么?主要解决什么问题? • 1.2 与其他…...
Pandas **Series**
以下是关于 Pandas Series 的从入门到精通的系统指南,包含核心概念、操作技巧和实战示例: 1. 入门篇:基础操作 1.1 创建Series import pandas as pd# 从列表创建 s1 pd.Series([1, 3, 5, 7, 9]) # 默认数字索引 s2 pd.Series([10, 20, 3…...
Kafka 多线程开发消费者实例
目前,计算机的硬件条件已经大大改善,即使是在普通的笔记本电脑上,多核都已经是标配了,更不用说专业的服务器了。如果跑在强劲服务器机器上的应用程序依然是单线程架构,那实在是有点暴殄天物了。不过,Kafka …...
Linux线程池实现
1.线程池实现 全部代码:whb-helloworld/113 1.唤醒线程 一个是唤醒全部线程,一个是唤醒一个线程。 void WakeUpAllThread(){LockGuard lockguard(_mutex);if (_sleepernum)_cond.Broadcast();LOG(LogLevel::INFO) << "唤醒所有的休眠线程&q…...
Linux《进程概念(上)》
在之前的Linux学习当中我们已经了解了基本的Linux指令以及基础的开发工具的使用,那么接下来我们就要开始Linux当中一个非常重要的部分的学习——进程,在此进程是我们之后Linux学习的基础,并且通过进程的学习会让我们了解更多的操作系统的相关…...
【算法】并查集基础讲解
一、定义 一种树型的数据结构,用于处理一些不相交集合的合并及查询问题。思想是用一个数组表示了整片森林(parent),树的根节点唯一标识了一个集合,只要找到了某个元素的的树根,就能确定它在哪个集合里。 …...
C++ STL常用算法之常用集合算法
常用集合算法 学习目标: 掌握常用的集合算法 算法简介: set_intersection // 求两个容器的交集 set_union // 求两个容器的并集 set_difference // 求两个容器的差集 set_intersection 功能描述: 求两个容器的交集 函数原型: set_intersection(iterator beg1, iterat…...
Qt warning LNK4042: 对象被多次指定;已忽略多余的指定
一、常规原因: pro或pri 文件中源文件被多次包含 解决:删除变量 SOURCES 和 HEADERS 中重复条目 二、误用 对于某些pri库可以使用如下代码简写包含 INCLUDEPATH $$PWDHEADERS $$PWD/*.hSOURCES $$PWD/*.cpp但是假如该目录下只有头文件,没…...
ACM模式常用方法总结(Java篇)
文章目录 一、ACM输入输出模式二、重要语法2.1、导包2.2、读取数据2.3、判断是否有下一个数据2.4、输出2.5、关闭scanner2.6、易踩坑点 一、ACM输入输出模式 在力扣上编写代码时使用的是核心代码模式,如果在面试中遇到ACM模式就会比较迷茫?ACM模式要求你…...
日程公布| 第八届地球空间大数据与云计算前沿大会与集中学习(3号通知)
日程公布| 第八届地球空间大数据与云计算前沿大会与集中学习(3号通知) 日程公布| 第八届地球空间大数据与云计算前沿大会与集中学习(3号通知)...
leetcode 28 Find the Index of the First Occurrence in a String
直接用kmp算法 class Solution { public:int strStr(string haystack, string needle) {return kmp(haystack,needle);}int kmp(std::string &text,std::string &pattern){int n text.size();int m pattern.size();if(m 0)return 0;std::vector<int> next;ne…...
