L1-032 Left-pad(Java)

根据新浪微博上的消息,有一位开发者不满NPM(Node Package Manager)的做法,收回了自己的开源代码,其中包括一个叫left-pad的模块,就是这个模块把javascript里面的React/Babel干瘫痪了。这是个什么样的模块?就是在字符串前填充一些东西到一定的长度。例如用*去填充字符串GPLT,使之长度为10,调用left-pad的结果就应该是******GPLT。Node社区曾经对left-pad紧急发布了一个替代,被严重吐槽。下面就请你来实现一下这个模块。

输入格式:

输入在第一行给出一个正整数N(≤104)和一个字符,分别是填充结果字符串的长度和用于填充的字符,中间以1个空格分开。第二行给出原始的非空字符串,以回车结束。

输出格式:

在一行中输出结果字符串。

输入样例1:

15 _
I love GPLT

输出样例1:

____I love GPLT

输入样例2:

4 *
this is a sample for cut

输出样例2:

cut

解题思路

  1. 读取目标长度 N 和填充字符。
  2. 读取原始字符串。
  3. 计算需要填充的字符数量:paddingCount = N - 原始字符串的长度
  4. 如果 paddingCount 大于 0,则在原始字符串前面添加相应数量的填充字符。
  5. 输出结果字符串。

如果 paddingCount 小于或等于 0,则表示原始字符串的长度已经达到或超过了目标长度,直接输出原始字符串的最后 N 个字符即可。

解题过程中遇到的问题

什么时候需要用到scanner.nextLine(); // 读取换行符

在Java中,使用scanner.nextLine();来读取换行符通常是在处理用户输入时,尤其是在连续读取多种类型的输入(如整数、字符串等)时非常重要。这种情况通常出现在以下几种情景:

  1. 在读取整数或其他数据类型后读取字符串:当你使用例如scanner.nextInt();scanner.nextDouble();这样的方法读取非字符串类型的输入后,这些方法不会读取行尾的换行符(\n)。如果紧接着使用scanner.nextLine();来读取字符串,它会读取到之前输入后留下的换行符,并返回一个空字符串。为了避免这个问题,通常在读取完非字符串类型的数据后,先使用一次scanner.nextLine();来消耗掉这个换行符。
  2. 在读取多行数据时:如果你需要读取多行数据,每行都用换行符分隔,那么使用scanner.nextLine();是合适的。它会读取直到下一个换行符之前的所有字符,包括空格,这对于处理多行字符串输入非常有用。

例如,考虑以下输入场景:

int number = scanner.nextInt(); // 假设用户输入了一个数字后按下了回车
scanner.nextLine(); // 这一行读取了上一个输入后的换行符
String text = scanner.nextLine(); // 现在这一行才是真正读取用户输入的字符串

如果在这个例子中没有使用scanner.nextLine();来读取第一个数字后的换行符,那么String text = scanner.nextLine();这行将会立即读取到那个换行符,并返回一个空字符串,而不是预期的用户输入。

代码

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int targetLength = scanner.nextInt(); // 目标长度String paddingChar = scanner.next(); // 填充字符scanner.nextLine(); // 读取换行符String originalString = scanner.nextLine(); // 原始字符串int paddingCount = targetLength - originalString.length(); // 计算需要填充的字符数StringBuilder result = new StringBuilder();for (int i = 0; i < paddingCount; i++) {result.append(paddingChar); // 添加填充字符}if (paddingCount < 0) {// 如果填充字符数为负,截取原始字符串的后部分result.append(originalString.substring(-paddingCount));} else {// 否则,将原始字符串添加到结果中result.append(originalString);}System.out.println(result.toString()); // 输出结果字符串scanner.close();}
}

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

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

相关文章

对docker的一些粗略理解

what-什么是docker&#xff1f;&#xff08;建议在Linux上安装&#xff0c;win11自带有linux系统&#xff0c;但是我试过在上面安装不太灵活&#xff09; 关键词&#xff1a;容器/盒子/大房子 Docker 是一种开源平台&#xff0c;用于轻松部署、运行和管理应用程序的容器化技术。…

渗透测试-靶机DC-2-知识点总结

靶机DC-2-知识点总结 一、前言二、实验环境三、渗透测试工具1. cewl&#xff08;1&#xff09;cewl简介&#xff08;2&#xff09;cewl常见用法 2. wpscan&#xff08;1&#xff09;wpscan简介&#xff08;2&#xff09;wpscan常见用法<1>直接扫描<2>-e u爆破用户名…

Elasticsearch各种高级文档操作2

本文来记录下Elasticsearch各种文档操作 文章目录 初始化文档数据 初始化文档数据 在进行各种文档操作之前&#xff0c;我们先进行初始化文档数据的工作

C++的命名空间域

一、域作用限定符 :: 即是域作用限定符&#xff0c;它的作用是指明一个标识符&#xff08;变量、函数或类&#xff09;来自哪一个作用域范围 二、编译器搜索变量、函数等的原则 1.先搜索局部变量&#xff0c;2.再搜索全局变量&#xff0c;3.最后搜索指定的命名空间域 三、…

回调函数和钩子函数的区别

文章目录 一、 回调函数和钩子函数的异同点1.1 回调函数和钩子函数的区别1.2 举例 二、回调函数和钩子函数的相同点 一、 回调函数和钩子函数的异同点 1.1 回调函数和钩子函数的区别 钩子函数和回调函数都是编程中常用的概念&#xff0c;它们在实现某些特定功能时都非常有用&…

java 读取word内容

接到一个任务&#xff0c;要读取doc文件的内容。解析里面的内容&#xff0c;进行一个处理和返回。 读取doc: 看了 很多文章&#xff0c;基本都是&#xff1a; import org.apache.poi.hwpf.HWPFDocument; import org.apache.poi.hwpf.extractor.WordExtractor; import java.i…

android 和 opencv 开发环境搭建

本文详细说明给android项目添加opencv库的详细步骤&#xff0c;并通过实现图片灰度化来查看配置是否成功。 下载OPENCV ANDROID SDK 到官网下载 打开 https://opencv.org/releases/ 选择android&#xff0c;下载完成后解压出下面的文件&#xff1a; 安装android sdk 和 ndk …

快手二面:节流和防抖知道吗?

面试官:节流与防抖&#xff0c;说说两者各自适用场景&#xff1f; 回答&#xff1a;面试官&#xff0c;在前端开发中&#xff0c;节流&#xff08;Throttle&#xff09;和防抖&#xff08;Debounce&#xff09;是两种常用的优化高频率执行JavaScript代码的技术。我将分别阐述它…

1.17号网络

网络属性 1> 对于套接字而言&#xff0c;在不同的层中&#xff0c;可以设置不同的属性&#xff0c;如端口号快速重用、超时时间、设置广播、加入多播组等等 2> 关于网络属性&#xff0c;有两个函数&#xff0c;分别是 setsockopt、getsockopt #include <sys/types.h…

数据库(基础理论+MySQL安装和部署)

目录 基础理论 1.1 什么是数据库&#xff1f; 1.2 DBMS数据库管理系统 1.3 数据库与文件系统的区别 1.4 数据库的发展和规划 1.5 常见的数据库 1.5.1 关系型数据库 1.5.2 非关系型数据库 1.6 DBMS支持的数据模型 层次模型 网状模型 关系模型 面向对象模型&#xf…

T2T VIT 学习笔记(附代码)

论文地址&#xff1a;https://arxiv.org/abs/2101.11986 代码地址&#xff1a;https://github.com/PaddlePaddle/PASSL/tree/main/configs/t2t_vit 1.是什么&#xff1f; T2T-ViT是一种基于Transformer的视觉模型&#xff0c;用于图像分类任务。它通过将图像分割成小的图块&…

在uni-app中使用sku插件,实现商品详情页规格展示和交互。

商品详情 - SKU 模块 学会使用插件市场&#xff0c;下载并使用 SKU 组件&#xff0c;实现商品详情页规格展示和交互。 存货单位&#xff08;SKU&#xff09; SKU 概念 存货单位&#xff08;Stock Keeping Unit&#xff09;&#xff0c;库存管理的最小可用单元&#xff0c;通…

【MyBatis-Plus】逻辑删除

对于一些比较重要的数据&#xff0c;我们通常采用逻辑删除。&#xff08;即用一个字段表示是否删除&#xff0c;实际上始终在数据库没有被删除&#xff09; 当逻辑删除字段为 true&#xff0c;业务处理的时候会自动把该数据当做一个“不存在”的数据处理。&#xff08;即不处理…

这篇Java基础快速入门学习教程,让我至少少走3个月弯路

一、作为刚接触Java的新手&#xff0c;先了解Java的基础。 Java 基本语法、Java 平台应用、Java的核心概念&#xff1a;JVM、JDK、JRE以及Java面向对象思想&#xff0c;同时要会学到如何在系统中搭建Java开发环境&#xff0c;以及如何利用第三方工具进行Java程序的开发。 还有…

计算机网络课程设计-Tracert 与 Ping 程序设计与实现

目录 前言 1 实验题目 2 实验目的 3 实验内容 3.1 步骤 3.2 关键代码 3.2.1 发送ICMP数据报 3.2.2 解析收到的数据报 4 实验结果与分析 5 代码 5.1 ping代码 5.2 Tracert代码 前言 本实验为计算机网络课程设计内容&#xff0c;基本上所有代码都是根据指导书给的附录…

BigeMap在Unity3d中的应用,助力数字孪生

1. 首先需要用到3个软件&#xff0c;unity&#xff0c;gis office 和 bigemap离线服务器 Unity下载地址:点击前往下载页面(Unity需要 Unity 2021.3.2f1之后的版本) Gis office下载地址:点击前往下载页面 Bigemap离线服务器 下载地址: 点击前往下载页面 Unity用于数字孪生项…

Flutter中的图片查看器:使用photo_view库

在移动应用开发中&#xff0c;图片查看器是一个常见的需求。Flutter提供了许多库来简化这一过程&#xff0c;其中photo_view库是一个强大而灵活的选择。本文将介绍photo_view库的基本概念以及如何在Flutter应用中使用它来实现漂亮的图片查看体验。 1. 什么是photo_view库&…

ilqr 算法说明

1 Introduction 希望能用比较简单的方式将ilqr算法进行整理和总结。 2 HJB方程 假定我们现在需要完成一个从A点到B点的任务&#xff0c;执行这段任务的时候&#xff0c;每一步都需要消耗能量&#xff0c;可以用下面这个图表示。 我们在执行这个A点到B点的任务的时候&#xf…

什么是区块链?

区块链 区块链 &#xff08;英语&#xff1a;blockchain&#xff09;是借由 密码学 与 共识机制 等技术建立&#xff0c;存储数据的 保证不可篡改和不可伪造的 分布式技术。 什么是区块 区块 就是将一批数据打包在一起&#xff0c;并且给打包出来的区块编号。第一个区块的编…

AT24C02读写操作 一

//AT24C02初始化 void AT24C02_Init(void) { IIC_Init(); } //AT24C02的字节写入 写一个字节 void AT24C02_WordWrite(uint8_Address,uint8_t Data) { //1。主机发送开始信号 IIC_StartSignal(); //2.主机发送器件地址 写操作 IIC_SentBytes(0xA0); //3.主机等侍从机应…