Java — nextLine()、next()、nextInt()
一、区别
1. nextLine()、next()、nextInt()
- nextLine():
使用nextLine()方法时,不将空格看做是两个字符串的间隔,而是看作字符串的一部分,返回时,它作为 String 类型一并返回 - next():
使用 next() 方法时,将 空格 看作是两个字符串的 间隔。【言外之意:一次next(),只读取一个字符串,遇到空格即为读取该字符串结束。】
可以接收String,也可接收int,不过统一将数据以 String 类型接收。 - nextInt():
使用nextInt()方法时,与 next() 方法类似,依旧将 空格 看作是两个输入的数据的 间隔。
当使用nexInt()方法时,只能读取 int 类型的数据。
2. 测试代码
-
完整代码:
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("测试nextLine()方法:"); String a = scanner.nextLine(); System.out.println(a); System.out.println("测试next()方法:"); String b = scanner.next(); System.out.println(b); System.out.println("测试nextInt()方法:"); int c = scanner.nextInt(); System.out.println(c); } }
-
运行结果:
测试nextLine()方法: 输入:10 5 abc 输出:10 5 abc // 解释:nextLine()的结束符为“回车”,且不将空格看做是两个字符串的间隔, // 所以 String a = scanner.nextLine(); 输入完"10 5 abc",按下回车之后,将这串字符用 a 来接收了。 测试next()方法: 输入:10 5 abc 输出:10 // 解释:next()将 空格 看作是两个字符串的间隔,一次next()只读取一个字符 // 所以 String b = scanner.next(); 只读取了 10 测试nextInt()方法: 5 // 解释:nextInt()读取,在next()中未读取完的第一个字符串(整数)5
二、读取控制台输入多行数据
通过上面比对了nextLine()、next()、nextInt()区别。
如果我们需要读取控台台输入的多行数据,又或者一行数据中含有空格作为分隔符,那么最好的方案就是采用nextLine()。
用" "作为所以输入结束的标识,即在一个空行上进行回车。
-
代码如下:
以下代码是通过控制台输入多行数字// 从键盘输入样例 ArrayList<Integer[]> inputList = new ArrayList<>(); do { Scanner in = new Scanner(System.in); // 依次读取每一行 String inputString = in.nextLine(); if (inputString.equals("")) { break; } String stringArray[] = inputString.split(" "); Integer num[] = new Integer[stringArray.length]; for (int i = 0; i < stringArray.length; i++) { num[i] = Integer.parseInt(stringArray[i]); } inputList.add(num); } while (true);