7-1 jmu-Java-02基本语法-08-ArrayList入门 (10 分)

本习题主要用于练习如何使用ArrayList来替换数组。
新建1个ArrayList<String> strList用来存放字符串,然后进行如下操作。

提示: 查询Jdk文档中的ArrayList。
注意: 请使用System.out.println(strList)输出列表元素。

输入格式

  1. 输入: n个字符串,放入strList。直到输入为!!end!!时,结束输入。

  2. strList头部新增一个begin,尾部新增一个end

  3. 输出列表元素

  4. 输入: 字符串str

  5. 判断strList中有无包含字符串str,如包含输出true,否则输出false。并且输出下标,没包含返回-1。

  6. 在strList中从后往前找。返回其下标,找不到返回-1。

  7. 移除掉第1个(下标为0)元素,并输出。然后输出列表元素。

  8. 输入: 字符串str

  9. 将第2个(下标为1)元素设置为字符串str.

  10. 输出列表元素

  11. 输入: 字符串str

  12. 遍历strList,将字符串中包含str的元素放入另外一个ArrayList strList1,然后输出strList1。

  13. 在strList中使用remove方法,移除第一个和str相等的元素。

  14. 输出strList列表元素。

  15. 使用clear方法,清空strList。然后输出strList的内容,size()isEmpty(),3者之间用,连接。

输入样例:

a1 b1 3b a2 b2 12b c d !!end!!
b1
second
b

输出样例:

[begin, a1, b1, 3b, a2, b2, 12b, c, d, end]
true
2
2
begin
[a1, b1, 3b, a2, b2, 12b, c, d, end]
[a1, second, 3b, a2, b2, 12b, c, d, end]
[3b, b2, 12b]
[a1, second, 3b, a2, b2, 12b, c, d, end]
[],0,true
import java.util.ArrayList;
import java.util.Scanner;public class Main {public static void main(String[] args){Scanner in = new Scanner(System.in);ArrayList<String> strList = new ArrayList<>();while(true){String s = in.next();if("!!end!!".equals(s)) {break;}strList.add(s);}strList.add(0, "begin");strList.add("end");System.out.println(strList);String str = in.next();System.out.println(strList.contains(str));System.out.println(strList.indexOf(str));System.out.println(strList.lastIndexOf(str));System.out.println(strList.get(0));strList.remove(0);System.out.println(strList);str = in.next();strList.set(1, str);System.out.println(strList);str = in.next();ArrayList<String> strList1 = new ArrayList<>();for(int i=0;i<strList.size();i++){if(strList.get(i).contains(str)) {strList1.add(strList.get(i));}}System.out.println(strList1);strList.remove(str);System.out.println(strList);strList.clear();System.out.println(strList+","+strList.size()+","+strList.isEmpty());}
}

7-2 jmu-Java&Python-统计一段文字中的单词个数并按单词的字母顺序排序后输出 (10 分)

现需要统计若干段文字(英文)中的不同单词数量。
如果不同的单词数量不超过10个,则将所有单词输出(按字母顺序),否则输出前10个单词。

注1:单词之间以空格(1个或多个空格)为间隔。
注2:忽略空行或者空格行。
注3:单词大小写敏感,即'word'与'WORD'是两个不同的单词 。

输入说明

若干行英文,最后以!!!!!为结束。

输出说明

不同单词数量。 然后输出前10个单词(按字母顺序),如果所有单词不超过10个,则将所有的单词输出。

输入样例

Failure is probably the fortification in your pole
It is like a peek your wallet as the thief when you
are thinking how to spend several hard-won lepta
when you Are wondering whether new money it has laid
background Because of you, then at the heart of the
most lax alert and most low awareness and left it
godsend failed
!!!!!

输出样例

49
Are
Because
Failure
It
a
alert
and
are
as
at
import java.util.*;public class Main {public static void main(String[] args) {Set<String> words = new TreeSet<>();Scanner sc = new Scanner(System.in);while(true){String ss = sc.next();if(ss.equals("!!!!!"))break;elsewords.add(ss);}System.out.println(words.size());if(words.size() < 10){for(String s : words)System.out.println(s);}else{int count = 0;for(String s : words){if(count++ > 9)break;System.out.println(s);}}sc.close();}
}

7-3 程序填空题4 (5 分)

补全以下程序,使程序能得到与输出样例通样的结果。

import java.util.*;
public class Main {public static void main(String[] args) {//请在此处添加一行代码ts.add("cab");ts.add("bac");ts.add("bca");ts.add("123");ts.add("abc");ts.add("acb");ts.add("cba");ts.add("cab");//请在此处添加一行代码while (it.hasNext()) {System.out.println(it.next());}}
}
### 输入格式: 无 ### 输出格式: 多行有序的字符串 ### 输入样例: ```in ``` ### 输出样例: ```out 123 abc acb bac bca cab cba ```
import java.util.*;public class Main {public static void main(String[] args) {//请在此处添加一行代码TreeSet ts = new TreeSet();ts.add("cab");ts.add("bac");ts.add("bca");ts.add("123");ts.add("abc");ts.add("acb");ts.add("cba");ts.add("cab");//请在此处添加一行代码Iterator it = ts.iterator();while (it.hasNext()) {System.out.println(it.next());}}
}

7-4 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

结尾无空行

import java.util.ArrayList;
import java.util.Scanner;
import java.util.TreeSet;public class Main{public static void main(String[] args) {Scanner n=new Scanner(System.in);String str=n.nextLine();String[] st=str.split(",");TreeSet t=new TreeSet();for(int i=0;i<st.length;i++) {if(st[i].contains("-")) {String[] f=st[i].split("-");int x=Integer.parseInt(f[0]);int d=Integer.parseInt(f[1]);if(x>d) {int s=x;x=d;d=s;}for(int j=x;j<=d;j++){t.add(j);}}else {t.add(Integer.parseInt(st[i]));}}ArrayList m=new ArrayList(t);for(int i=0;i<m.size();i++) {if(i==0)System.out.print(m.get(i));elseSystem.out.print(" "+m.get(i));}}
}

7-5 学术会议地点统计问题 (10 分)

学术会议地点统计问题

秘书统计张教授【以后简称 z 】和王教授【以后简称 w 】上一年度参加学术会议的情况,教授详细行程清单如下:

z:bj 3,hz 2,qd 4,nj 5,wh 3,bj 3

w:hn 7,xm 6,bj 4,gz 6,wh 4

现在秘书需要完成以下统计工作。 找出两位教授共同去过的城市,并找出住宿天数长的教授,按照如下格式输出:

z:bj 6,w:wh 4

请同学们编写代码帮助搞定。

输入格式:

固定为2行

【数据说明】冒号前面为教授简称,冒号后面为会议详情,分组内使用空格分开,左边为城市地点简称,右边为住宿天数,多个分组之间使用逗号分开【以上字符均为西文】(测试数据经过专门处理,不存在共同去过的城市有相同天数的情况)

输出格式:

固定为1行

由0个或者多个记录组成,记录格式为:

教授简称 冒号 城市简称 空格 天数

多个记录之间使用逗号分开,最后一个记录末尾没有逗号

如果0个记录时,输出 none

【输出顺序说明】输出按照城市地点简称字母升序排序

【输出内容说明】如果没有共同去过的城市,输出为 none 四个字母,两边均无空格

输入样例:

在这里给出一组输入。例如:

z:bj 3,hz 2,qd 4,nj 5,wh 3,bj 3
w:hn 7,xm 6,bj 4,gz 6,wh 4

结尾无空行

输出样例:

在这里给出相应的输出。例如:

z:bj 6,w:wh 4

结尾无空行

import java.util.Scanner;
import java.util.TreeMap;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);TreeMap<String, Integer> z = new TreeMap<String, Integer>();TreeMap<String, Integer> w = new TreeMap<String, Integer>();String s = sc.nextLine();s = s.substring(2);String[] ss = s.split(",");for(String i : ss) {String[] s2 = i.split(" ");if (!z.containsKey(s2[0])) {z.put(s2[0], Integer.parseInt(s2[1]));} else {z.put(s2[0], Integer.parseInt(s2[1]) + z.get(s2[0]));}}s = sc.nextLine();s = s.substring(2);ss = s.split(",");for(String i : ss) {String[] s2 = i.split(" ");if (!w.containsKey(s2[0])) {w.put(s2[0], Integer.parseInt(s2[1]));} else {w.put(s2[0], Integer.parseInt(s2[1]) + w.get(s2[0]));}}int cnt = 0;for(String i : z.keySet()){if(w.containsKey(i)){if(cnt != 0){System.out.print(",");}cnt++;if(z.get(i) > w.get(i)){System.out.print("z:" + i + " " + z.get(i));}else if(z.get(i) < w.get(i)){System.out.print("w:" + i + " " + w.get(i));}}}if(cnt == 0){System.out.println("none");}}
}

7-6 单链表基本操作 (5 分)

请编写程序实现单链表插入、删除结点等基本算法。给定一个单链表和一系列插入、删除结点的操作序列,输出实施上述操作后的链表。单链表数据域值为整数。

输入格式:

输入第1行为1个正整数n,表示当前单链表长度;第2行为n个空格间隔的整数,为该链表n个元素的数据域值。第3行为1个正整数m,表示对该链表施加的操作数量;接下来m行,每行表示一个操作,为2个或3个整数,格式为0 k d或1 k。0 k d表示在链表第k个结点后插入一个数据域值为d的结点,若k=0则表示表头插入。1 k表示删除链表中第k个结点,此时k不能为0。注:操作序列中若含有不合法的操作(如在长度为5的链表中删除第8个结点、删除第0个结点等),则忽略该操作。n和m不超过100000。

输出格式:

输出为一行整数,表示实施上述m个操作后的链表,每个整数后一个空格。输入数据保证结果链表不空。

输入样例:

5
1 2 3 4 5
5
0 2 8
0 9 6
0 0 7
1 0
1 6

输出样例:

7 1 2 8 3 5 
#include<stdio.h>
typedef struct Node
{int data;struct Node*next;
}node;
node* head=NULL;
node* rear;
void insertend(node* temp)
{if(head==NULL){head=temp;rear=temp;rear->next=NULL;}else{rear->next=temp;rear=temp;rear->next=NULL;}
}
void insert(node*temp,int k,int d)
{if(k==0){temp->data=d;temp->next=head;head=temp;}else{node* p0=head;while(k-1>0){p0=p0->next;k--;}temp->next=p0->next;p0->next=temp;temp->data=d;}
}
void delete(int k)
{node* p=head;int nm=1;while(p!=NULL&&nm<k-1){p=p->next;nm++;}node*q=p;p=p->next;if(p->next!=NULL){q->next=p->next;free(p);}else{q->next=NULL;free(p);}
}
int main()
{int n,i;int num;node*p;int m;scanf("%d",&n);for(i=0;i<n;i++) {node*n=(node*)malloc(sizeof(struct Node));insertend(n);}p=head; while(p!=NULL){scanf("%d",&num);p->data=num;p=p->next;}scanf("%d",&m);int n1,n2,n3;for(i=0;i<m;i++){scanf("%d",&n1);if(n1==0){scanf("%d",&n2);scanf("%d",&n3);if(n2>=0&&n2<=n){node*temp=(node*)malloc(sizeof(struct Node));insert(temp,n2,n3);n++;}}if(n1==1){scanf("%d",&n2);if(n2>0&&n2<=n){delete(n2);n--;}}}p=head;while(p!=NULL){printf("%d ",p->data);p=p->next;}printf("\n");return 0;
}

7-7 查询某人 (10 分)

有一个人员数组,要在此数组中查询某个人是否存在,具体要求如下:
1.定义Person类:
a 属性 name和age
b 两个属性的getters 和setters
c 带参数构造方法,为name和age给值 以及无参构造方法,给name赋值为none,age赋值为1
d ToString方法
public String toString() { return "Person [name=" + name + ", age=" + age + "]"; }
2.在main方法中,创建Person数组,数组长度通过键盘输入,数组每一个对象的name和age通过键盘给出,创建数组后,首先显示所有人员的信息,然后输入一个姓名,查询数组中有这个人么?如果有,输出这个人的信息,否则输出not found

输入格式:

请在这里写输入格式。例如:输入在一行中给出2个绝对值不超过1000的整数A和B。

输出格式:

请在这里描述输出格式。例如:对每一组输入,在一行中输出A+B的值。

输入样例:

在这里给出一组输入。例如:

3
tian 3
jerry 23
sun 22
su

结尾无空行

3
may 51
sunny 23
lily 32
lily

结尾无空行

输出样例:

在这里给出相应的输出。例如:

Person [name=tian, age=3]
Person [name=jerry, age=23]
Person [name=sun, age=22]
not found

结尾无空行

Person [name=may, age=51]
Person [name=sunny, age=23]
Person [name=lily, age=32]
查询结果:
Person [name=lily, age=32]

结尾无空行

import java.util.Scanner;class Person {private String name;private int age;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public Person() {this.setName("none");this.setAge(1);}public Person(String name, int age) {this.setName(name);this.setAge(age);}public String toString() {return "Person [name=" + name + ", age=" + age + "]";}
}class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();Person[] pp = new Person[n];for (int i = 0; i < n; i++) {pp[i] = new Person(sc.next(), sc.nextInt());}String fid = sc.next();int flag = 0;for (int i = 0; i < n; i++) {System.out.println(pp[i].toString());if (pp[i].getName().equals(fid) == true) {flag = 1;System.out.println("查询结果:");System.out.println(pp[i].toString());}}if (flag == 0)System.out.println("not found");sc.close();}
}

PTA练习 05集合框架相关推荐

  1. 20.Java集合框架(四)

    01.集合框架工具类(Collections-sort) public static <T extends Comparable<? super T>> void sort(L ...

  2. Java学习---day14_集合框架03

    Java学习-day14_集合框架03 Set集合 Set集合中,没有下标的概念 Set集合,是一个去重复的集合.在Set集合中不会添加重复的元素的 在向一个Set集合中添加元素的时候,会先判断这个元 ...

  3. 第48节:Java当中的集合框架

    Java当中的集合框架 01 在我们班里有50位同学,就有50位对象. // 简书作者:达叔小生 Student[] stus = new Student[20]; 结果来了一位插班生,该同学因为觉得 ...

  4. 重新开始学Java——集合框架之Collection

    为什么需要集合框架呢?因为之前使用数组进行存储对象的时候,会发现,经常不能够确定大小的存在,那么这里就需要使用集合框架的存在.集合框架分为两种,第一个是 java.util.Collection :而 ...

  5. JavaEE学习笔记-(2)java集合框架

    JCF:java集合框架 Collection:单值类型集合 1.List 类型 底层实现 ArrayList(数组元素个数) 数组 LinkedList() 链表 Vector(数组元素个数,步长) ...

  6. java api 框架_java常用对象API之集合框架

    说到集合框架,其实刚开始学的时候有点自我感觉很简单,自己认为就是集合类中的框架之类的,但是当自己简单把它过了一变后发现懵里懵懂的,什么都没懂,于是自己又认认真真的看了一遍,才弄明白. 说到集合框架就不 ...

  7. java实现用户登录注册功能(用集合框架来实现)

    需求:实现用户登录注册功能(用集合框架来实现) 分析: A:需求的类和接口 1.用户类 UserBean 2.用户操作方法接口和实现类 UserDao UserDaoImpl 3.测试类 UserTe ...

  8. Java集合框架综述,这篇让你吃透!

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:平凡希 cnblogs.com/xiaoxi/p/60899 ...

  9. 【Java集合框架】ArrayList类方法简明解析(举例说明)

    本文目录 1.API与Java集合框架 2.ArrayList类方法解析 2.1 add() 2.2 addAll() 2.3 clear() 2.4 clone() 2.5 contains() 2 ...

  10. JAVA语言基础-面向对象(集合框架02List、泛型)

    2019独角兽企业重金招聘Python工程师标准>>> 16.01_集合框架(去除ArrayList中重复字符串元素方式)(掌握) A:案例演示 需求:ArrayList去除集合中字 ...

最新文章

  1. Statement接口实现查询数据、添加数据
  2. thinkphp 使用外部php或html 原理
  3. c语言求n(n从1到10),关于C语言的一道题
  4. pandas 替换 某列大于_pandas数据分析总结大全(入门加进阶)
  5. Shell记录-Shell命令(其他)
  6. fastd java下载_FastReport VCL报表控件
  7. Linux多任务编程(三)---exec函数族及其基础实验
  8. WPF学习:分页控件
  9. [轉]VS 2010 通过 Architecture创建UML类图设计
  10. 简单易学的机器学习算法——极限学习机(ELM)
  11. ACE程序员教程(下载地址)
  12. 学习Linux-4.12内核网路协议栈(1.1)——系统的初始化(do_initcalls)
  13. System.Configuration.ConfigurationErrorsException:“配置系统未能初始化”
  14. 美团面试官:Java 性能调优你会多少?一个问题就把我问的哑口无言,哭了
  15. 专升本英语——语法知识——基础语法——第一节 名词和代词【学习笔记】
  16. 清理服务器 归档日志文件,服务器归档日志模式
  17. 一篇文章讲清什么是NVMe
  18. 多家机构宣布接入文心一言能力
  19. 计算机学校宣传片创意和构思,【差一步就会02】用PPT做影视宣传片
  20. 【Python】安装PIL (Python Imaging Library )

热门文章

  1. 计算机程序设计语言的英语作文,计算机程序设计艺术 1-4卷 英文版
  2. 将多个Excel表中的sheet合并到同一个Excel中,并以原表名为sheet名
  3. Unity2D光照配置及使用教程,法线贴图增强立体感
  4. python 数字炸弹
  5. springboot执行定时任务的几种方式
  6. python 3d动物_小白从零自学python爬虫之福彩3d实战
  7. IDEA 报Module xxx is imported from Maven.Any changes made in its ......解决办法
  8. 塔三 微信 服务器少,南京鼓楼区有没有那种服务83757326微信塔三-南京鼓楼区有没有那种服务83757326微信塔三节目,专辑,电台在线听-蜻蜓FM...
  9. 什么是继承?什么是组合?为何说要多用组合少用继承?
  10. 移植三星的kernel(二)