一、nextInt()、nextLine()区别:
1.nextInt()只会读取数值,剩下"\n"还没有读取,并将cursor放在本行中。
2.nextLine()会读取"\n",并结束(nextLine() reads till the end of line \n)。
3.如果想要在nextInt()后读取一行,就得在nextInt()之后额外加上cin.nextLine(),
/**
*
*/
package com.hqy.test;
import java.util.Scanner;
/**
* @author hadoop
*
*/
public class scannertest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner inScanner=new Scanner(System.in);
int m=inScanner.nextInt();
String string=inScanner.nextLine();
System.out.println("OK");
}
}
从下图可以看出:
从下图看出:String string=inScanner.nextLine();
该行并没有被执行,nextInt()只会读取数值,剩下"\n"还没有读取,并将cursor放在本行中。所以,inScanner.nextLine()直接读取“\n”并结束了。
二、要想在nextInt()后读取一行则要,载加上:in.nextLine()将nextInt()留下的“\n”读取掉。如下:
import java.util.Scanner;
/**
* @author hadoop
*
*/
public class scannertest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner inScanner=new Scanner(System.in);
int m=inScanner.nextInt();
inScanner.nextLine();
String string=inScanner.nextLine();
System.out.println("OK");
}
}
三、读取一个整数n,并在下一行中读取n个由空格隔开的整数的方法:
方法一:
/**
*
*/
package com.hqy.test;
import java.util.Scanner;
/**
* @author hadoop
*
*/
public class scannertest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner inScanner=new Scanner(System.in);
while(inScanner.hasNext()){
int m=inScanner.nextInt();
inScanner.nextLine();//去掉换行
String[] strings=inScanner.nextLine().trim().split(" ");
for(String str:strings){
System.out.print(str);
}
System.out.println();
}
}
}
方法二:
/**
*
*/
package com.hqy.test;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
/**
* @author hadoop
*
*/
public class scannertest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner inScanner=new Scanner(System.in);
while(inScanner.hasNext()){
int m=inScanner.nextInt();
List<Integer> list=new ArrayList<>();
for(int i=0;i<m;i++){
list.add(inScanner.nextInt());
}
for(Integer str:list){
System.out.print(str);
}
System.out.println();
}
}
}
注意:
inScanner.nextInt()只读取数字