首页 > 编程语言 >Java复习45(PTA)

Java复习45(PTA)

时间:2024-11-14 12:48:36浏览次数:3  
标签:10 打印 Java String 45 PTA 20 页码 输入

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,打印,Java,String,45,PTA,20,页码,输入
From: https://blog.csdn.net/2301_79272475/article/details/143715151

相关文章

  • hnuJava程序设计基础训练-2024
    1. DNA序列(Java)【问题描述】 一个DNA序列由A/C/G/T四个字母的排列组合组成。G和C的比例(定义为GC-Ratio)是序列中G和C两个字母的总的出现次数除以总的字母数目(也就是序列长度)。在基因工程中,这个比例非常重要。因为高的GC-Ratio可能是基因的起始点。给定一个很长的DNA序列,以......
  • Java复习44(PTA)
     单词替换分数10全屏浏览切换布局作者 孙晨霞单位 河北农业大学设计一个对字符串中的单词查找替换方法,实现对英文字符串中所有待替换单词的查找与替换。输入格式:首行输入母字符串,第二行输入查询的单词,第三行输入替换后的单词。输出格式:完成查找替换后的完整......
  • Java流程控制(三.一)
    publicclassoperator{publicstaticvoidmain(String[]args){//打印九九乘法表for(inti=1;i<10;i++){for(intj=1;j<=i;j++){System.out.print(i+"*"+j+"="+i*j+"\t&q......
  • cmu15545-索引并发控制(Concurrent Indexes)
    目录OverviewLock和Latch辨析设计目标大致分类HashTableLatchesPageLatchesSlotLatchesB+TreeLatches并发问题LatchCrabbing/CoupingOptimisticCoupling(乐观锁)LeafNodeScanOverviewLock和Latch辨析Lock:抽象的,逻辑的,整体统筹Latch:具体的,原语性的,自我管理本节主要探......
  • Java基础面试题
    1.switch的使用intx=2;intresult=0;switch(x){case1:result=result+x;case2:result=result+x*2;case3:result=result+x*3;}System.out.println(result);//返回结果为10//switch语句当case与值不......
  • Java8
    Lambda一、简介Lambda表达式是Java8引入的一种新的语法,它允许你以简洁的方式表示可传递给方法或存储在变量中的代码块。Lambda表达式可以用来替代匿名内部类,使代码更加简洁、易读和易于维护。二、Lambda表达式的基本语法Lambda表达式的语法形式为:(parameters)->expre......
  • java 实训第15天 Java 多线程
    Java多线程一、定义   java程序本身就是多线程的。   二、相关概念   1、操作系统   内核实现其他资源的管理和调度。   2、进程   一个进程就是操作系统中运行的一个应用程序,每个进程都有进程ID标志唯一性   3、线程   线程是计算......
  • Java 实训第17天 Java网络编程
    Java网络编程一、网络分层1、OSI七层   应用层:HTTPFTPPOP3SMTPTELNET...    表示层:    会话层:     传输层:TCPUDP    网络层:IP    数据链路层   物理层    2、TCP/IP协议   应用层--- 应用层,表示......
  • 【华为OD机试真题E卷】573、区间交叠问题 | 机试真题+思路参考+代码解析(E卷复用)(C++、J
    文章目录一、题目......
  • 085Java+Spring Boot+Vue微信小程序的妆造服务平台的设计与实现
    项目截图Java语言介绍Java语言是目前最受欢迎的一种高级语言,它是一种类C的语言,将C和C++的优势结合在一起,但又舍弃了各自的劣势,在Java语言中,所有的东西都是对象。这使得Java语言的开发工作变得更为高效。Java语言所依靠的开发环境中,最重要的一部分就是JDK......