New Coder牛客网机试题练习(一)
1、注重类的完整性以及主函数的完整性,有严格的格式。
例如: public class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); String str = sc.nextLine();//sc为键盘输入的值,也就是入参 } }
2、对输入有严格的控制,使用
Scanner sc = new Scanner(System.in);
3、读取时也有严格的数据类型的变量来承接输入的扫描得到的参数
4、输出有严格的输出 System.out.print() 或者System.out.println() 无多余的提示
5、对算法的空间和时间有严格的限制。64M 2s等;
6、Scanner的用法一


其实上图的意思就是,比如:nextlnt():只读取int值,就是只能读取整数类型的数据,如果输入了非整型的数据(浮点型字符串等)就会报错。
nextFloat()、nextDouble()这些也是以此类推,只能读取符合该类型的数据。
报错异常:Exception in thread "main" java.util.InputMismatchException
public class NewCoderTest { public static void main(String[] args){ Scanner sc = new Scanner(System.in); String str1 = sc.nextLine(); System.out.println(sc.radix()+"str1:"+str1); String str2 = sc.next(); System.out.println("str2:"+str2); int i = sc.nextInt(); System.out.println("i:"+i); long l = sc.nextLong(); System.out.println("l:"+l); Double d = sc.nextDouble(); System.out.println("d:"+d); boolean b = sc.nextBoolean(); System.out.println("b:"+b); } }

此处重点讲一下next()和nextLine()的区别
next():只读取输入直到空格。它不能读两个由空格或符号隔开的单词(只读取第一个空格或者符号之前的)。此外,next()在读取输入后将光标放在同一行中。(next()只读空格之前的数据,并且光标指向本行)
nextLine():读取输入,包括单词之间的空格和除回车以外的所有符号(即。它读到行尾)。读取输入后,nextLine()将光标定位在下一行。
public static void main(String[] args){ Scanner sc = new Scanner(System.in); System.out.println("请输入一个字符串(中间能加空格或符号)"); String str3 = sc.nextLine(); System.out.println("请输入一个字符串(中间不能加空格或符号)"); String str4 = sc.next(); System.out.println("请输入一个整数"); int c; c = sc.nextInt(); System.out.println("请输入一个double类型的小数"); double d2 = sc.nextDouble(); System.out.println("请输入一个float类型的小数"); float f = sc.nextFloat(); System.out.println("按顺序输出以上的值:"); System.out.println(str3); System.out.println(str4); System.out.println(c); System.out.println(d2); System.out.println(f);

7、Scanner用法二:

public static void main(String args[]) { Scanner scan = new Scanner(System.in); //构造Scanner类的对象scan,接收从控制台输入的信息 System.out.println("请输入你的Name"); String name = scan.nextLine();//接收一个字符串,可以加除Enter以外的所有符号,包括空格和Tab System.out.println("请输入你的Code"); String code; while(scan.hasNextLine()) {// hasNextLine()方法判断当前是否有输入,当键盘有输入后执行循环 if(scan.hasNextInt()) {// 判断输入的值是否为整数类型,当为整数类型时执行循环 code= scan.nextLine(); System.out.println("你输入的Name为:"+name); System.out.println("你输入的Code为:"+code); break; }else { System.out.println("请输入数字哦!"); code= scan.nextLine(); continue; } } }
输出结果:

输入固定数字,代表写入多少个值,然后将值存储到字符串数组中:
public static void main(String[] args) { Scanner sc = new Scanner(System.in); String[] strArr = new String[10]; for (int i = 0; i < strArr.length; i++) { if (sc.hasNextLine()) { String str5 = sc.nextLine(); strArr[i] = str5; } } System.out.println("strArr:" + JSON.toJSONString(strArr)); for (int i = 0; i < strArr.length; i++) { System.out.println("strArr" + i + ":" + strArr[i]); } }
输入输出结果:
101aaa 120aaa 1234 asd 345 123 last strArr:["101aaa","120aaa","","1234","","asd","","345","123","last"] strArr0:101aaa strArr1:120aaa strArr2: strArr3:1234 strArr4: strArr5:asd strArr6: strArr7:345 strArr8:123 strArr9:last Disconnected from the target VM, address: '127.0.0.1:64146', transport: 'socket' Process finished with exit code 0
例如输入10个值,其中空格也代表有值。
public static void main(String[] args) { Scanner sc = new Scanner(System.in); String rowString = sc.next(); String colString = sc.next(); int row = Integer.valueOf(rowString); int col = Integer.valueOf(colString); System.out.print(row + " " + col); String[][] strArr = new String[row][col]; for (int i = 0; i < row; i++) { for(int j =0;j<col;j++){ if (sc.hasNext()) { String str5 = sc.next(); strArr[i][j] = str5; } } } System.out.println("strArr:" + JSON.toJSONString(strArr)); for (int i = 0; i < row; i++) { for(int j = 0;j<col;j++){ if(j<col-1){ //System.out.print("strArr" + i + j+":" + strArr[i][j]); System.out.print(strArr[i][j] +" "); }else{ //System.out.println("strArr" + i + j+":" + strArr[i][j]); System.out.println(strArr[i][j]); } } } }
4 4 4 4 11 12 13 14 21 22 23 24 31 32 33 34 41 42 43 44 strArr:[["11","12","13","14"],["21","22","23","24"],["31","32","33","34"],["41","42","43","44"]] 11 12 13 14 21 22 23 24 31 32 33 34 41 42 43 44 Disconnected from the target VM, address: '127.0.0.1:64651', transport: 'socket' Process finished with exit code 0
next的用法:
public static void main(String[] args) { Scanner sc = new Scanner(System.in); String[] strArr = new String[10]; for (int i = 0; i < strArr.length; i++) { if (sc.hasNext()) { String str5 = sc.next(); strArr[i] = str5; } } System.out.println("strArr:" + JSON.toJSONString(strArr)); for (int i = 0; i < strArr.length; i++) { System.out.println("strArr" + i + ":" + strArr[i]); } }
111 234 123 4556 1223ds 3435 435654 sdafd safddg sfdd dfhsh fdgfhhhgfh strArr:["111","234","123","4556","1223ds","3435","435654","sdafd","safddg","sfdd"] strArr0:111 strArr1:234 strArr2:123 strArr3:4556 strArr4:1223ds strArr5:3435 strArr6:435654 strArr7:sdafd strArr8:safddg strArr9:sfdd Disconnected from the target VM, address: '127.0.0.1:64237', transport: 'socket' Process finished with exit code 0
不忘初心,相信自己,坚持下去,付诸实施。

浙公网安备 33010602011771号