Java中next() 与 nextLine() 区别
next():
1、一定要读取到有效字符后才可以结束输入。
2、对输入有效字符之前遇到的空白,next() 方法会自动将其去掉。
3、只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。
4、next() 不能得到带有空格的字符串。
例如:
1 import java.util.Scanner; 2 public class ScannerDemo { 3 public static void main(String[] args) { 4 Scanner scan = new Scanner(System.in); 5 // 从键盘接收数据 6 //next方式接收字符串 7 System.out.println("next方式接收:"); 8 // 判断是否还有输入 9 if(scan.hasNext()){ 10 String str1 = scan.next(); 11 System.out.println("输入的数据为:"+str1); 12 } } }
结果为:
1 next方式接收: 2 hello world 3 输入的数据为:hello
nextLine():
1、以Enter为结束符,也就是说 nextLine()方法返回的是输入回车之前的所有字符。
2、可以获得空白。
例如:
1 import java.util.Scanner; 2 public class ScannerDemo { 3 public static void main(String[] args) { 4 Scanner scan = new Scanner(System.in); 5 // 从键盘接收数据 6 //nextLine方式接收字符串 7 System.out.println("nextLine方式接收:"); 8 // 判断是否还有输入 9 if(scan.hasNextLine()){ 10 String str2 = scan.nextLine(); 11 System.out.println("输入的数据为:"+str2); 12 } } }
执行以上程序输出结果为:
1 nextLine方式接收: 2 hello world 3 输入的数据为:hello world
如果要输入 int 或 float 类型的数据,在 Scanner 类中也有支持,但是在输入之前最好先使用 hasNextXxx() 方法进行验证,再使用 nextXxx() 来读取:
1 import java.util.Scanner; 2 public class ScannerDemo { 3 public static void main(String[] args) { 4 Scanner scan = new Scanner(System.in); 5 // 从键盘接收数据 6 int i = 0 ; 7 float f = 0.0f ; 8 System.out.print("输入整数:"); 9 if(scan.hasNextInt()){ 10 // 判断输入的是否是整数 11 i = scan.nextInt() ; 12 // 接收整数 13 System.out.println("整数数据:" + i) ; 14 }else{ 15 // 输入错误的信息 16 System.out.println("输入的不是整数!") ; 17 } 18 System.out.print("输入小数:"); 19 if(scan.hasNextFloat()){ 20 // 判断输入的是否是小数 21 f = scan.nextFloat() ; 22 // 接收小数 23 System.out.println("小数数据:" + f) ; 24 }else{ 25 // 输入错误的信息 26 System.out.println("输入的不是小数!") ; 27 } 28 } 29 }
执行以上程序输出结果为:
1 输入整数:12 2 整数数据:12 3 输入小数:1.2 4 小数数据:1.2