今天笔试又遇到输入问题,有时候这是个大问题,搞清楚!!!很重要,查了资料网上说的不全,不清楚,特总结。欢迎交流。
1.先总结,说说到底是啥!
- next(),nextInt(),nextDouble()....
这些可以认为是一类,首先这些都是“阻塞式的”,意思就是如果遇到空格,Tab,Enter,会继续等待,直到获得相应类型相应的值!!!!!
而且!!焦点不会移动到下一行,仍然处在这一行上。
- next()---String,nextInt()----int,nextDouble()----double....
2.例子:
- package com.demo;
-
- import java.util.Scanner;
-
- public class NEXT {
-
- public static void main(String[] args) {
- Scanner in = new Scanner(System.in);
- System.out.println("请输入一个整数");
- while(in.hasNextLine()){
- String tString = in.next();
- int num = in.nextInt();
- // System.out.println("请输入一个字符串");
- // String str = in.nextLine();
- System.out.println("num:"+num);
- String str = in.next();
- System.out.println("num="+num+",str="+str);
- String s3 = in.nextLine();
- System.out.println("s3:"+s3);
- }
- }
- }
先自己测试下吧,印象深刻!!!!
下面以一个例子仔细解释下:
例2:
先总结注意点;
如果一开始输入了空格,Tab,Enter,那么会继续等待!!!!直到获取值。
另外一类是nextLine():当使用nextLine()方法时会读取改行从前到的所有的内容,包括换行符,然后把焦点移动到下一行的开头。也就是可以把空格,回车读出值为空!!1
- package com.demo;
-
- import java.util.Scanner;
-
- public class NEXT {
-
- public static void main(String[] args) {
- Scanner in = new Scanner(System.in);
-
- while(in.hasNextLine()){
- String tString = in.next();
- System.out.println(tString);
- int num = in.nextInt();
-
- String str = in.nextLine();
- System.out.println("num:"+num);
-
- System.out.println("num="+num+",str="+str);
- String s3 = in.nextLine();
- System.out.println("s3:"+s3);
- }
- }
- }
分析:
当输入1 2(2前有空格)后
- String tString = in.next();
把1读入---存储到tString
当读到上面时候,有一个空格,阻塞--继续往后读,读到了2,好的光标停止在当前行尾
- String str = in.nextLine();
下面执行上面关键的一行,光标现在在结尾,前面的值已经被读走,现在读取包括回车在内的以及其前面存在的值!!!!----为空----光标位置移到下一行首,等待取值!!
所以输出str=空
如果此时再按回车,那么继续往下执行!!
- String s3 = in.nextLine();
读取包括回车在内的当前行,仍然为空。
我想你已经明白了!!!
2.总结:
对于数组循环建议使用nextInt()等类型
对于读取一行值然后继续处理--使用nextLine()
实用技巧:读数组--赋值
先给输入输出样例:
输入:
4 4
1 2 3 4
1 2 3 4
1 2 3 4
1 2 3 4
输出
1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4
- import java.util.Scanner;
-
- public class TestArray {
- public static void main(String[] args) {
- Scanner scanner = new Scanner(System.in);
- while (scanner.hasNext()) {
- int row = scanner.nextInt();
- int col = scanner.nextInt();
- int[][] matrix = new int[row][col];
- for (int i = 0; i < row * col; i++) {
- matrix[i / col][i % col] = scanner.nextInt();
- }
-
- for (int i = 0; i < row; i++) {
- for (int j = 0; j < col; j++) {
- System.out.print(matrix[i][j]+" ");
- }
- }
- }
-
- scanner.close();
- }
- }
nextLine()样例:求解最后一个单词的长度
输入:abd dc fd f good
输出:4
- import java.util.Scanner;
- public class Main {
-
- public static void main(String[] args) {
- Scanner input = new Scanner(System.in);
- String s="";
- while(input.hasNextLine()){
- s=input.nextLine();
- System.out.println(s.length()-1-s.lastIndexOf(" "));
- }
- }
- }
|