1.下面两段程序,第二段有问题,为什么第一段没问题?
Scanner sc = new Scanner(System.in);
System.out.println("请输入第一个字符串:");
String str1 = sc.nextLine();
System.out.println("请输入第二个字符串:");
String str2 = sc.nextLine();
System.out.println("str1 = "+ str1 +"," + "str2 = "+ str2);
Scanner sc = new Scanner(System.in);
System.out.println("请输入第一个数字:");
int num1 = sc.nextInt();
System.out.println("请输入第一个字符串:");
String str3 = sc.nextLine();
System.out.println("num1 = "+ num1 +"," + "str3 = "+ str3);
原因:因为nextLine();输入字符串时,遇到\r\n,就会结束读取,但是不读取\r\n。在第二段程序中,输入一个数字后按回车,数字赋值给num1后nextInt()读取结束。后边nextLine();遇到回车(\r\n)也就结束读取。怎样解决?
常用方法:输入都使用.nextLine();后边使用方法使字符串转数字,如下:
Scanner sc = new Scanner(System.in);
System.out.println("请输入第一个数字:");
String str1 = sc.nextLine();
int num1 = Integer.parseInt(str1);
System.out.println("请输入第一个字符串:");
String str2 = sc.nextLine();
System.out.println("num1 = "+ num1 +"," + "str2 = "+ str2);
2.在使用Scanner输入整数时可以使用,一个方法先判断是否输入是整数:
Scanner sc = new Scanner(System.in);
int num = 0;
System.out.println("请输入整数:");
if(sc.hasNextInt()){
num = sc.nextInt();
}