题目:
思路:用一个二维数组存储输入的学号和座位号。
知识点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
但是,测试结果竟然是部分正确。
看样子代码还得优化,看了看人家做的很多都是用的C语言的结构体,Java没有结构体,或许可以用类来实现吧?这题不太想做了,以后有空再来管它吧。
————————————————————————————————————————————————————————————————————————————————————————
我带着俩小时学的C++皮毛回来管它了!C++用结构体解决挺简单的,写起来快,也能全部通过。
上代码:
#includeusing namespace std;struct stu{ string s; int a,b;};int main() { stu arr[1010]; int n; cin>>n; for(int i=0;i >arr[i].s>>arr[i].a>>arr[i].b; } int m,x; cin>>m; for(int i=0;i >x; for(int j=0;j