本文主要是介绍7-3 office文档页码打印 (20分),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
java旧题复习
7-3 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
ans:
import java.util.*;
public class Main {public static void main(String[] args) {// TODO Auto-generated method stubScanner in=new Scanner(System.in);String s=in.next();String[] a=s.split(",");judge jj=new judge();Set<Integer> set=new HashSet<>();//要求没有重复的元素,使用集合处理for(int i=0;i<a.length;i++) {if(jj.isInt(a[i])) {//如果是整数set.add(Integer.parseInt(a[i]));//添加到集合中}else {//如果不是整数String[] temp=a[i].split("-");int num1=Integer.parseInt(temp[0]);int num2=Integer.parseInt(temp[1]);if(num1>num2) {int tt=num1;num1=num2;num2=tt;}for(int ii=num1;ii<num2;ii++) {set.add(ii);//添加到集合}}}int[] arr=new int[set.size()];int len=0;for(Integer i:set) {arr[len++]=i.intValue();}Arrays.sort(arr);//排序,默认小到大for(int ii=0;ii<arr.length;ii++) {//输出System.out.print(arr[ii]);if(ii<arr.length-1)System.out.print(" ");}}
}class judge{public boolean isInt(String s) {//判断是否是整数for(int i=0;i<s.length();i++) {if(!(s.charAt(i)>='0'&&s.charAt(i)<='9')) {return false;}}return true;}
}
这篇关于7-3 office文档页码打印 (20分)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!