Java复习45(PTA)

office文档页码打印

分数 20

全屏浏览

切换布局

作者 黄敏

单位 河北科技大学

在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;

输入格式:

第一行:表示页码范围的格式化字符串

输出格式:

将需要打印的页码按照由小到大的顺序输出,以空格分割

输入样例:

1,3,5-9,20

输出样例:

1 3 5 6 7 8 9 20

输入样例:

12-20,1,15,9,5-10

输出样例:

1 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

栈限制

8192 KB

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        // 读取页码范围的输入
        String input = scanner.nextLine();
        
        // 使用 TreeSet 存储页码,自动处理重复和排序
        Set<Integer> pageNumbers = new TreeSet<>();

        // 分割输入字符串
        String[] ranges = input.split(",");

        for (String range : ranges) {
            // 检查是否是范围
            if (range.contains("-")) {
                String[] bounds = range.split("-");
                int start = Integer.parseInt(bounds[0]);
                int end = Integer.parseInt(bounds[1]);
                
                // 添加从 start 到 end 的所有页码
                for (int i = Math.min(start, end); i <= Math.max(start, end); i++) {
                    pageNumbers.add(i);
                }
            } else {
                // 单个页码
                pageNumbers.add(Integer.parseInt(range));
            }
        }

        // 使用 StringBuilder 构建输出字符串
        StringBuilder output = new StringBuilder();
        for (Integer pageNumber : pageNumbers) {
            output.append(pageNumber).append(" ");
        }

        // 输出结果
        System.out.println(output.toString().trim());

        scanner.close();
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值