Java笔试题常用输入方法

从三月份找实习开始,我才算是真正意识到自己有多菜。经历了数不清多少次的笔试,算法方面菜鸡也就算了,没想到几乎每次考试都会在输入方面卡壳半个小时左右。这次7.28号拼多多“学霸批”的笔试,也是在输入方面浪费了大量时间。为此,在这里总结一下笔试可能会用到的输入方法,吃一堑长一智。本文持续更新。

类型一:多行输入,每行为一个数组,数字之间用空格隔开

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Scanner in = new Scanner(System.in);
String str1 = in.nextLine().toString();//读取第一行
String[] a = str1.split(" ");//按空格分开为字符串数组
int[] arrA = new int[a.length];//新建同大小的整型数组
for (int i = 0; i < arrA.length; i++) {
arrA[i] = Integer.parseInt(a[i]);//字符串解析为十进制整数
}

String str2 = in.nextLine().toString();//读取第二行,后面几行同理
String[] b = str2.split(" ");
int[] arrB = new int[b.length];
for (int i = 0; i < arrB.length; i++) {
arrB[i] = Integer.parseInt(b[i]);
}

System.out.println(Arrays.toString(arrA));//显示数组
System.out.println(Arrays.toString(arrB));

类型二:第一行一个整数,第二行一个数组

此类型的输入不区分各行,只判定第一个整数为数组大小,之后的整数为数组数据即可。也就是只按整型输入读取。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 /**
* 输入一个整数(数组大小),一个数组(空格或回车隔开)
* 2
* 1 3
* @author YJC
*
*/
Scanner in = new Scanner(System.in);
while(in.hasNext()) {
int m = in.nextInt();//读取第一个整数,即数组大小
int[] numbers = new int[m];//新建数组
for(int i=0;i<m;i++) {
numbers[i] = in.nextInt();//按整型输入读取
}

System.out.println(Arrays.toString(numbers));
}

类型三:输入多行整数用逗号隔开

输入

1
20,3,55

代码如下

1
2
3
4
5
Scanner in = new Scanner(System.in);
String[] line = in.nextLine().split(",");
int a = Integer.parseInt(line[0]);
int b = Integer.parseInt(line[1]);
int c = Integer.parseInt(line[2]);
0%