对牛客比赛中的几个注意事项(开多个Scanner出现的no such element exception)(持续更新)
这两天做了几次牛客网的比赛,得出一个结论——我还是太菜了。
但是对于本身其实有一些代码的注意事项,都是我写代码时实际踩到的坑。
1.相信不用多说大家都知道类名要写成Main吧 M要大写!
2.不要在同一个类里开多个Scanner。
虽然再你的idea里运行没有问题但是提交的时候就不行了。
例如
这里这个题目是
输入第一行为测试用例T,接下来有T组测试数据
每组测试用例第一行为一个整数n 。n表示有n个title
接下来nn行每行一个字符串表示第i个title,title只可能是national或者international
总的来说就是先输入一个数字作为总个数
再数入一个数字作为单个中的个数
再对应数字输入字符串
天真的我肯定是直接开三个Scanner
Scanner input1 = new Scanner(System.in);
int n=input1.nextInt();
Scanner input = new Scanner(System.in);
int n=input.nextInt();
Scanner scanner = new Scanner(System.in);
int n=scanner.nextLine();
然后就出现了
no such element exception
我也懵逼
是为什么我到现在都没搞懂
但是注意了一下问题就改了就好了
老老实实的,规范自己,多多学习
for (int i = 0; i < n; i++) {
HashMap<String, Integer> hashMap=new HashMap();
String number=input1.nextLine();
int n2=Integer.parseInt(number);
for (int j = 0; j < n2; j++) {
String string = input1.nextLine();
if (hashMap.containsKey(string)){
hashMap.put(string,hashMap.get(string).intValue()+1);
}
else {
hashMap.put(string, 1);
}
}
maps[i]=hashMap;
}
这里是该题的代码
什么?当然是改好了的
其实核心就是
链接:https://ac.nowcoder.com/acm/contest/10175/A
来源:牛客网
对于给出的nn个title中,每能组成一对<national,international><national,international>(也就是中国国际),那么竞赛的等级就可以在A的基础上增加一个+。
俺当然是想到用map存。
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
printA();
}
public static void printA(){
Scanner input1 = new Scanner(System.in);
String T=input1.nextLine();
int n=Integer.parseInt(T);
System.out.println(n);
HashMap maps[]=new HashMap[n];
//存数据
for (int i = 0; i < n; i++) {
HashMap<String, Integer> hashMap=new HashMap();
String number=input1.nextLine();
int n2=Integer.parseInt(number);
for (int j = 0; j < n2; j++) {
String string = input1.nextLine();
if (hashMap.containsKey(string)){
hashMap.put(string,hashMap.get(string).intValue()+1);
}
else {
hashMap.put(string, 1);
}
}
maps[i]=hashMap;
}
for (HashMap<String, Integer> hashMap:maps
) {
int n1=0;
int n2=0;
int result = 0;
if (hashMap.containsKey("national")) {
n1 = hashMap.get("national").intValue();
}
else n1=0;
if (hashMap.containsKey("international")) {
n2 = hashMap.get("international").intValue();
}
else n2=0;
if (n1*n2!=0){
if (n1>=n2){
result=n2;
}
else if (n1<n2){
result=n1;
}
}
else {
result=0;
}
System.out.print("A");;
for (int i = 0; i <result ; i++) {
System.out.print("+");
}
System.out.println();
}
}
}
希望对大家有帮助
侵删致歉。