Java 输入输出总结
Scanner中,Next()、NextInt()和NextLine()的区别
next() 方法
空白字符是什么
空白字符是指在文本中不显示任何内容,但用于控制文本格式和布局的字符。它们在编程和文本处理过程中非常重要,尤其是在处理字符串和文件时。
常见的空白字符
在C语言和其他编程语言中,常见的空白字符包括:
空格符(Space):ASCII码为32,表示一个普通的空格。
制表符(Tab):ASCII码为9,用于水平制表。
换行符(Newline):ASCII码为10,用于将光标移到下一行的开头。
回车符(Carriage Return):ASCII码为13,用于将光标移到当前行的开头。
垂直制表符(Vertical Tab):ASCII码为11,用于垂直制表。
换页符(Form Feed):ASCII码为12,用于将光标移到下一页的开头。
这些字符在不同的操作系统和文本编辑器中可能表现不同。例如,在Windows系统中,换行通常由回车符和换行符组合表示(\r\n),而在Unix和Linux系统中,换行通常只由换行符表示(\n)。
用于读取输入中的下一个标记(token),它会跳过任何前导的空白字符(如空格、Tab 键等),并在遇到下一个空白字符时停止读取。这意味着 next() 方法不能读取包含空格的字符串。例如:
import java.util.Scanner;
public class Example {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入一个字符串:");
String input = sc.next();
System.out.println("输入的字符串是:" + input);
}
}
如果输入 Hello World,输出将是 Hello,因为 next() 方法在遇到空格(也是空白字符)时停止读取。
nextLine() 方法
nextLine() 方法用于读取整行输入的数据,包括空格和换行符。当调用 nextLine() 时,它会读取输入的整行内容,直到遇到换行符 \n 为止,并将其作为字符串返回。
import java.util.Scanner;
public class Example {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入一个字符串:");
String input = sc.nextLine();
System.out.println("输入的字符串是:" + input);
}
}
nextLine() 方法用于读取整行输入,包括空格和其他空白字符,直到遇到换行符(Enter 键)为止。这意味着 nextLine() 方法可以读取包含空格的字符串。例如:
如果输入 Hello World,输出将是 Hello World,因为 nextLine() 方法读取了整行输入。
nextInt()
nextInt() 方法用于读取整数类型的数你 据。当调用 nextInt() 时,它会扫描输入的下一个标记,并将其解析为一个整数。需要注意的是,nextInt() 方法在读取完整数后,光标仍然停留在当前行,并且不会读取换行符 \n。
示例代码:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入一个整数: ");
int num = sc.nextInt();
System.out.println("你输入的整数是: " + num);
}
}
混用的注意事项
当 next() 和 nextLine() 、nextInt() 方法混合使用时,可能会遇到一些问题。例如,next() 和 nextInt() 不会读取到换行符,而 nextLine() 方法会读取到换行符。因此,在使用 next() 方法或nextInt() 方法后,如果需要使用 nextLine() 方法,建议在 next() 方法后添加一个额外的 nextLine() 方法,以消耗掉换行符。例如:
import java.util.Scanner;
public class Example {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入一个整数:");
int number = sc.nextInt();
sc.nextLine(); // 消耗掉换行符
System.out.print("请输入一个字符串:");
String input = sc.nextLine();
System.out.println("输入的整数是:" + number);
System.out.println("输入的字符串是:" + input);
}
}
这样可以避免 nextLine() 方法读取到空的输入
总结
-
next()和nextLine均用于读取字符串,nextInt()用于读取整数
-
只有nextLine()会读取到换行符
