天梯赛题目JAVA_PTA 天梯赛L1-005 考试座位号 使用Java实现 适合小白

PTA 天梯赛L1-005 考试座位号 使用Java实现 适合小白

PTA 天梯赛L1-005 考试座位号 使用Java实现 适合小白

ps:内容较多,但绝对有用,慢慢享用~

原题:

每个 PAT 考生在参加考试时都会被分配两个座位号,一个是试机座位,一个是考试座位。正常情况下,考生在入场时先得到试机座位号码,入座进入试机状态后,系统会显示该考生的考试座位号码,考试时考生需要换到考试座位就座。但有些考生迟到了,试机已经结束,他们只能拿着领到的试机座位号码求助于你,从后台查出他们的考试座位号码。

输入格式:

输入第一行给出一个正整数 N(≤1000),随后 N 行,每行给出一个考生的信息:准考证号 试机座位号 考试座位号。其中准考证号由 16 位数字组成,座位从 1 到 N 编号。输入保证每个人的准考证号都不同,并且任何时候都不会把两个人分配到同一个座位上。

考生信息之后,给出一个正整数 M(≤N),随后一行中给出 M 个待查询的试机座位号码,以空格分隔。

输出格式:

对应每个需要查询的试机座位号码,在一行中输出对应考生的准考证号和考试座位号码,中间用 1 个空格分隔。

输入样例:

4

3310120150912233 2 4

3310120150912119 4 1

3310120150912126 1 3

3310120150912002 3 2

2

3 4

输出样例:

3310120150912002 2

3310120150912119 1

解题思路:

(1)创建一个Student类,包含准考证号和考试座位号两个属性

(2)创建一个BufferedReader字符输入流对象,用来接收数据,此处不使用Scanner是因为相比BufferedReader,Scanner的读取速度太慢,而且不要两者混用否则会出问题。

拓展:Buffer,缓冲,顾名思义,带有Buffered的就叫缓冲流,缓冲流就是先把数据缓存到内存中,再进行读取。如果没有缓冲,则每次调用 read() 或 readLine()都会导致从文件中读取字节,并将其转换为字符后返回,而这是极其低效的。

关于IO流,这里有一幅思维导图可供大家参考:(该图也是我从别的大佬手里拿到的,需要的可以私聊我)

03fba315ff5298666e752a734ad9e83d.png

(3)实例化Student类对象数组

(4)每次输入的信息中按照准考证号、试机座位号、考试座位号分别输入

(5)使用split()方法判断所输入的信息,按照空格标记符分开,试机号作为数组下标,分别把准考证号和考试座位号封装起来

(6)接收所要查询的试机座位号个数和相应的试机座位号,并存放到query数组中

(7)根据输入的试机座位号,输出相应的考试座位号

split()函数

作用:返回一个下标从零开始的一维数组

示例:

Stringstr=“123¥45¥67¥8”;

strs[]=Stringstr.split("¥");

strs[0]=123;

strs[1]=45;

strs[2]=67;

strs[3]=8;

Integer.parseInt()是把()里的内容转换成整数。Integer.parseInt(String)遇到一些不能被转换为整型的字符时,会抛出异常。Integer.parseInt(String)的作用就是将答String字符类型数据转换为Integer整型数据。

代码:

import java.io.IOException;

import java.io.BufferedReader;

import java.io.InputStreamReader;

public class Main{

public static void main (String args[])throws IOException{

//创建缓冲字符输入流

BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

Student[] stu = new Student[1005];

//为保证输入的是整数,使用parseInt方法进行强制类型转换

int n = Integer.parseInt(reader.readLine());

while(n-- >0){

//将输入的每一行信息转换成数组

String[] source = reader.readLine().split(" ");

//数组的第一位即为准考证号

String no = source[0];

//数组的第2、3位分别为试机座位号和考试座位号

int prenum = Integer.parseInt(source[1]);

int num = Integer.parseInt(source[2]);

将每位学生的准考证号和考试座位号封装起来

stu[prenum] = new Student(no,num);

}

n = Integer.parseInt(reader.readLine());//所要查询学生的人数n

String[] query = reader.readLine().split(" ");//n个试机座位号存放在query数组中

for(int i = 0; i < query.length; i++)

{

int a = Integer.parseInt(query[i]);

System.out.print(stu[a].ID + " " + stu[a].kaoshi);

if(n > 0)

System.out.println();

}

reader.close();

}

}

//定义Student类

class Student{

String ID;

int kaoshi;

public Student(String no, int num) {

super();

this.ID = no;

this.kaoshi = num;

}

}

PTA 天梯赛L1-005 考试座位号 使用Java实现 适合小白相关教程

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据提供的引用内容,这段代码是用来统计输入数字中奇数和偶数的个数的。代码中使用循环遍历输入的数字,通过对2取模运算来判断数字是奇数还是偶数,然后分别对奇数和偶数的计数变量进行加一操作。循环结束后,输出奇数计数变量和偶数计数变量的值,中间用空格隔开。\[1\]\[2\]\[3\] 这段代码可以用来解决团体程序设计天梯赛-练习集 L1-022 奇偶分家的问。 #### 引用[.reference_title] - *1* [PTA团队天梯赛L1-022 奇偶分家](https://blog.csdn.net/m0_46492118/article/details/114481127)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [PAT团队程序设计天梯赛-习L1-022 奇偶分家](https://blog.csdn.net/qq_38234015/article/details/81291913)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [团体程序设计天梯赛-练习集 L1-022 奇偶分家 (10分)(C语言)](https://blog.csdn.net/Baridhu/article/details/109899606)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值