标签:alt out 测试结果 ati 实现 main 结构体 class 存储
题目:
思路:用一个二维数组存储输入的学号和座位号。
知识点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没有结构体,或许可以用类来实现吧?这题不太想做了,以后有空再来管它吧。
标签:alt out 测试结果 ati 实现 main 结构体 class 存储
原文地址:https://www.cnblogs.com/littleLittleTiger/p/10354700.html