Java输入输出:Scanner读取输入,System.out输出信息

在编程中,输入输出是非常基础且重要的操作。想象一下,如果程序只能自己运行,不能和用户交流,那是不是很无聊?比如,一个计算器程序需要知道用户想计算什么,一个聊天程序需要获取用户输入的消息。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() 吃掉回车符,避免读取空行。

通过这些基础操作,你已经可以实现与用户的简单交互了!多动手尝试不同的输入输出组合,很快就能熟练掌握~

小夜