在编程中,输入输出是非常基础且重要的操作。想象一下,如果程序只能自己运行,不能和用户交流,那是不是很无聊?比如,一个计算器程序需要知道用户想计算什么,一个聊天程序需要获取用户输入的消息。Java提供了多种方式来实现输入和输出,其中 System.out 用于输出信息,Scanner 类用于读取用户输入。接下来,我们一步步学习这两个常用的方法。
一、输出信息:使用 System.out¶
在Java中,System.out 代表标准输出流,最常用的输出方式有三种:println()、print() 和 printf()。它们的作用都是在控制台显示内容,但细节有所不同。
1.1 println():输出后自动换行¶
println() 会在输出内容的末尾自动添加一个换行符(\n)。比如:
System.out.println("Hello, Java!"); // 输出:Hello, Java! 然后换行
System.out.println("我是初学者"); // 输出:我是初学者 然后换行
运行这段代码,控制台会显示两行内容,分别是 “Hello, Java!” 和 “我是初学者”。
1.2 print():输出后不换行¶
print() 只输出内容,不会自动换行。比如:
System.out.print("你好,"); // 输出:你好,(不换行)
System.out.print("世界!"); // 输出:世界!(紧接着前面的内容,不换行)
// 此时控制台显示:你好,世界!
注意,print() 不会自动换行,所以多个 print() 语句会连续输出在同一行。
1.3 printf():格式化输出¶
printf() 可以按照指定的格式输出内容,类似C语言的 printf。它使用占位符来表示不同类型的数据,比如:
%d:整数%s:字符串%f:浮点数(小数)
举个例子:
int age = 20;
String name = "小明";
double height = 1.75;
System.out.printf("姓名:%s,年龄:%d岁,身高:%.2f米\n", name, age, height);
// 输出:姓名:小明,年龄:20岁,身高:1.75米
这里 %.2f 表示浮点数保留两位小数,非常适合格式化数字输出。
二、读取输入:使用 Scanner 类¶
如果需要获取用户输入(比如从键盘输入数据),Java的 Scanner 类是一个非常方便的工具。它位于 java.util 包下,需要先导入才能使用。
2.1 导入 Scanner 类¶
在代码开头,需要先导入 Scanner 类:
import java.util.Scanner; // 导入Scanner类
2.2 创建 Scanner 对象¶
导入后,创建一个 Scanner 对象来读取输入,输入源通常是 System.in(标准输入流,即键盘输入):
Scanner sc = new Scanner(System.in); // 创建Scanner对象,sc是变量名
这里的 sc 就是我们用来读取输入的“工具”,通过它可以调用各种读取方法。
2.3 常用读取方法¶
Scanner 提供了多种方法来读取不同类型的数据,下面是最常用的几种:
读取整数:nextInt()¶
System.out.print("请输入一个整数:");
int num = sc.nextInt(); // 读取用户输入的整数
System.out.println("你输入的整数是:" + num);
读取字符串:next() 和 nextLine()¶
next():读取字符串,遇到空格或回车就停止(不包含空格或回车)。nextLine():读取字符串,直到遇到回车为止(包含空格)。
注意:如果在使用 nextInt() 等方法后直接用 nextLine(),可能会读取到空行!因为 nextInt() 读取数字后会留下一个“回车符”在输入流中,nextLine() 会先读取这个回车符,导致得到空字符串。解决办法是在 nextInt() 后额外调用一次 nextLine() 来“吃掉”这个回车符。
举个例子:
// 读取字符串(用next())
System.out.print("请输入名字(用空格分隔的话只能读取第一个单词):");
String name1 = sc.next(); // 输入 "张三 李四",只能得到 "张三"
// 读取字符串(用nextLine())
System.out.print("请输入全名(可以包含空格):");
String name2 = sc.nextLine(); // 输入 "张三 李四",得到 "张三 李四"
// 注意:nextInt() 后需要吃掉回车符
System.out.print("请输入年龄:");
int age = sc.nextInt();
sc.nextLine(); // 吃掉回车符,避免影响后面的nextLine()
System.out.print("请输入身高(米):");
double height = sc.nextDouble(); // 正确读取身高
读取浮点数:nextDouble()¶
System.out.print("请输入一个小数:");
double decimal = sc.nextDouble(); // 读取浮点数
System.out.println("你输入的小数是:" + decimal);
2.4 关闭 Scanner(可选)¶
使用完 Scanner 后,最好关闭它以释放资源(比如 sc.close();):
sc.close(); // 关闭Scanner,结束输入
三、综合示例:简单的交互程序¶
现在,我们把输入输出结合起来,写一个完整的小例子:让用户输入个人信息(姓名、年龄、身高),然后程序输出这些信息。
import java.util.Scanner;
public class InputOutputDemo {
public static void main(String[] args) {
// 1. 输出欢迎语
System.out.println("===== 个人信息采集系统 =====");
// 2. 创建Scanner对象
Scanner sc = new Scanner(System.in);
// 3. 读取姓名
System.out.print("请输入你的姓名:");
String name = sc.nextLine();
// 4. 读取年龄(注意吃掉回车符)
System.out.print("请输入你的年龄:");
int age = sc.nextInt();
sc.nextLine(); // 吃掉回车符
// 5. 读取身高
System.out.print("请输入你的身高(米):");
double height = sc.nextDouble();
// 6. 输出用户信息
System.out.println("\n===== 你的信息汇总 =====");
System.out.println("姓名:" + name);
System.out.println("年龄:" + age + "岁");
System.out.println("身高:" + height + "米");
// 7. 关闭Scanner
sc.close();
}
}
运行示例:
===== 个人信息采集系统 =====
请输入你的姓名:张三
请输入你的年龄:20
请输入你的身高(米):1.75
===== 你的信息汇总 =====
姓名:张三
年龄:20岁
身高:1.75米
四、总结¶
- 输出:
System.out是输出的核心,println()自动换行,print()不换行,printf()格式化输出。 - 输入:
Scanner类用于读取输入,需先导入java.util.Scanner,创建对象Scanner sc = new Scanner(System.in);,常用方法有nextInt()、nextLine()、next()等。 - 注意:
next()和nextLine()的区别,以及nextInt()后需用nextLine()吃掉回车符,避免读取空行。
通过这些基础操作,你已经可以实现与用户的简单交互了!多动手尝试不同的输入输出组合,很快就能熟练掌握~