L1-005 考试座位号

题目:

思路:用一个二维数组存储输入的学号和座位号。

知识点for me:

1、不要在程序中混合使用nextInt(),next(),nextLine()。如果要使用nextLine()的话就全部使用nextLine()整行读入后,再进行处理。最开始我先用了nextInt()又用了nextLine(),发现nextLine()比我希望的少读了一行,可能是把第一行的换行符当作第一行了?

2、以空格分隔字符串的方法:String [] arr2 = str.split(" "); 

     但是如果待分隔的字符串像这样“a  b c   d“包含制表符、单个空格、多个空格时,可以这么做:String [] arr = str.split("\s+");  String的split方法支持正则表达式,而正则表达式s表示匹配任何空白字符,+表示匹配一次或多次。

上代码:

import java.io.*;
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int sum=Integer.parseInt(sc.nextLine());
        String [][]arr=new String[sum][3];    
        String s;
        int i,j;
        for(i=0;i<sum;i++)
        {
            s=sc.nextLine();
            arr[i]=s.split(" ");
        }
        String get=sc.nextLine();
        int g=Integer.parseInt(get.trim());
        String a=sc.nextLine();
        String arr2[]=new String[g];
        arr2=a.split(" ");
        for(i=0;i<g;i++)
        {
            for(j=0;j<sum;j++)
            {
                if(arr[j][1].equals(String.valueOf(arr2[i])))
                {
                    System.out.println(arr[j][0]+" "+arr[j][2]);
                    break;
                }
            }
        }
    }
}

但是,测试结果竟然是部分正确。

看样子代码还得优化,看了看人家做的很多都是用的C语言的结构体,Java没有结构体,或许可以用类来实现吧?这题不太想做了,以后有空再来管它吧。

————————————————————————————————————————————————————————————————————————————————————————

我带着俩小时学的C++皮毛回来管它了!C++用结构体解决挺简单的,写起来快,也能全部通过。

上代码:

#include <iostream>
using namespace std;
struct stu{
    string s;
    int a,b;
};
int main() {
    stu arr[1010];
    int n;
    cin>>n;
    for(int i=0;i<n;i++)
    {
        cin>>arr[i].s>>arr[i].a>>arr[i].b;
    }
    int m,x;
    cin>>m;
    for(int i=0;i<m;i++)
    {
        cin>>x;
        for(int j=0;j<n;j++)
        {
            if(arr[j].a==x)
            {
                cout<<arr[j].s<<" "<<arr[j].b<<endl;
                break;
            }
        }
    }
    return 0;
}

原文地址:https://www.cnblogs.com/littleLittleTiger/p/10354700.html