java在office软件(word,excel)中,有时只需要打印整个文档中的一部分,就需要用户选择需要打印的页码范围。目前输入的页码范围格式定义为:以逗号分割,可以使用-表示连续页码。例如:1,3,5-9,20。表示需要打印的页码为1,3,5,6,7,8,9,20。 本题目要求读入一行字符串,作为需要打印的页码范围。需要注意以下几点: 1、页码范围输入可以不按顺序。例如:5,3,7,9-10,1-2; 2、连续的页码定义也可能不会按照由小到大的顺序输入。例如:1,9,5,20-15,10; 3、输入的页码范围可能会有重复。例如:1,9,15,5-10,12-20; 输入格式: 第一行:表示页码范围的格式化字符串 输出格式: 将需要打印的页码按照由小到大的顺序输出,以空格分割
时间: 2024-03-20 20:40:39 浏览: 51
以下是Java代码实现:
```java
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String rangeStr = sc.nextLine();
String[] rangeArr = rangeStr.split(",");
int[] pageNums = new int[rangeArr.length];
int index = 0;
for (String range : rangeArr) {
if (range.contains("-")) {
String[] rangeNums = range.split("-");
int start = Integer.parseInt(rangeNums[0]);
int end = Integer.parseInt(rangeNums[1]);
for (int i = start; i <= end; i++) {
pageNums[index++] = i;
}
} else {
pageNums[index++] = Integer.parseInt(range);
}
}
Arrays.sort(pageNums);
StringBuilder sb = new StringBuilder();
for (int i = 0; i < pageNums.length; i++) {
if (i != 0) {
sb.append(" ");
}
sb.append(pageNums[i]);
}
System.out.println(sb.toString());
}
}
```
代码思路:
1. 读入页码范围格式化字符串。
2. 使用逗号分割字符串,得到一页一页的范围。
3. 遍历每个范围:
- 如果范围中包含“-”,说明是连续的页码范围,使用“-”分割字符串,得到开始页码和结束页码,将这个范围内的页码全部添加到一个数组中。
- 如果范围中不包含“-”,说明是单页页码,直接将页码添加到数组中。
4. 对数组进行排序,输出结果。
阅读全文