根据新浪微博上的消息,有一位开发者不满NPM(Node Package Manager)的做法,收回了自己的开源代码,其中包括一个叫left-pad的模块,就是这个模块把javascript里面的React/Babel干瘫痪了。这是个什么样的模块?就是在字符串前填充一些东西到一定的长度。例如用*去填充字符串GPLT,使之长度为10,调用left-pad的结果就应该是******GPLT。Node社区曾经对left-pad紧急发布了一个替代,被严重吐槽。下面就请你来实现一下这个模块。
输入在第一行给出一个正整数N(≤104)和一个字符,分别是填充结果字符串的长度和用于填充的字符,中间以1个空格分开。第二行给出原始的非空字符串,以回车结束。
在一行中输出结果字符串。
15 _
I love GPLT
____I love GPLT
4 *
this is a sample for cut
cut
如果 paddingCount 小于或等于 0,则表示原始字符串的长度已经达到或超过了目标长度,直接输出原始字符串的最后 N 个字符即可。
什么时候需要用到scanner.nextLine(); // 读取换行符
在Java中,使用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();
}
}