基础输入输出(Scanner,System.out)

一、输出语句:System.out详解

System.out 是 Java 中最基础的输出工具,用于将数据打印到控制台,常用的有两种方法:println() 和 print(),适用于不同场景。

1.1 换行输出:System.out.println()

语法格式:

System.out.println(输出内容);

功能:

打印内容后自动换行,下次输出从新的一行开始。

示例代码:

public class OutputDemo1 {
    public static void main(String[] args) {
        // 输出字符串
        System.out.println("Hello, Java!");
        // 输出数字
        System.out.println(100);
        // 输出变量
        int age = 20;
        System.out.println(age);
        // 输出表达式结果
        System.out.println(10 + 20);
        // 空参数:仅换行
        System.out.println(); // 单独换行
        System.out.println("上面是空行");
    }
}

运行结果:

Hello, Java!
100
20
30

上面是空行

特点:

  • 支持输出任意类型数据(字符串、数字、变量、表达式等)。
  • 括号内可以为空,仅执行换行操作(常用在需要分隔内容时)。

1.2 不换行输出:System.out.print()

语法格式:

System.out.print(输出内容);

功能:

打印内容后不换行,下次输出紧跟在当前内容后面。

示例代码:

public class OutputDemo2 {
    public static void main(String[] args) {
        System.out.print("Hello, "); // 不换行
        System.out.print("World!"); // 紧跟在上面内容后
        System.out.print("n"); // 手动换行(n是换行符)
        System.out.print("Java ");
        System.out.print("is fun!");
    }
}

运行结果:

Hello, World!
Java is fun!

特点:

  • 输出后不会自动换行,需手动添加 n 实现换行(如示例中的 System.out.print("n"))。
  • 括号内不能为空,否则编译报错(与 println() 不同)。

二、输入语句:Scanner 详解

Scanner 是 Java 提供的基础输入工具,用于从控制台获取用户输入的数据(如数字、字符串等)。新手使用时需严格按照 “导入包 → 创建对象 → 读取数据→关闭对象” 四步操作。

2.1 步骤 1:导入 Scanner 包

Scanner 类位于 java.util 包中,使用前必须在代码开头导入该包,否则无法识别。

导入格式:

import java.util.Scanner; // 放在类定义之前

2.2 步骤 2:创建 Scanner 对象

通过 new Scanner(System.in) 创建扫描器对象,用于接收控制台输入。

语法:

Scanner sc = new Scanner(System.in); // sc是对象名,可自定义(如input、scanner等)

2.3 步骤 3:读取不同类型的输入数据

Scanner 提供了多种方法读取不同类型的数据,新手常用的有以下几种:

(1)读取整数:nextInt()

用于获取用户输入的整数(int 类型)。
示例代码

import java.util.Scanner; // 步骤1:导入包

public class InputDemo1 {
    public static void main(String[] args) {
        // 步骤2:创建Scanner对象
        Scanner sc = new Scanner(System.in);
        
        // 提示用户输入
        System.out.print("请输入一个整数:");
        // 步骤3:读取整数
        int num = sc.nextInt(); // 将输入的整数赋值给变量num
        
        // 输出结果
        System.out.println("你输入的整数是:" + num);
    }
}

运行流程

  1. 程序执行到 sc.nextInt() 时会暂停,等待用户输入。
  2. 用户在控制台输入整数(如 100)并按回车,程序继续执行,将输入值赋给 num
  3. 输出结果:你输入的整数是:100

(2)读取字符串:next() 和 nextLine()

两种方法都可读取字符串,但有重要区别,容易混淆:

方法 功能 示例输入 输出结果
next() 读取到空格前的内容(自动忽略开头的空格,遇到空格或回车停止)。 "Hello World" "Hello"
nextLine() 读取一整行内容(包括空格,遇到回车停止)。 "Hello World" "Hello World"

示例代码

import java.util.Scanner;

public class InputDemo2 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        System.out.print("用next()输入字符串:");
        String str1 = sc.next();
        
        System.out.print("用nextLine()输入字符串:");
        sc.nextLine(); // 注意:这里是为了跳过next()留下的回车符(见注意事项2)
        String str2 = sc.nextLine();
        
        System.out.println("next()结果:" + str1);
        System.out.println("nextLine()结果:" + str2);
    }
}

运行结果

用next()输入字符串:Hello Java
用nextLine()输入字符串:Hello Java
next()结果:Hello
nextLine()结果:Hello Java

(3)读取小数:nextDouble()

用于获取用户输入的小数(double 类型),用法与 nextInt() 类似。

示例代码

import java.util.Scanner;

public class InputDemo3 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        System.out.print("请输入一个小数:");
        double num = sc.nextDouble();
        
        System.out.println("你输入的小数是:" + num);
    }
}

运行结果

请输入一个小数:3.14
你输入的小数是:3.14

2.4 Scanner 常见问题与解决方法

问题 1:输入类型不匹配导致崩溃

现象:当使用 nextInt() 读取整数时,若输入了字母或符号(如 abc12.3),程序会报错(InputMismatchException)。

解决:输入时严格按照提示的类型输入(如提示 “输入整数” 就只输入整数)。

问题 2:nextLine() 读取不到内容(被跳过)

原因nextInt()next() 等方法读取数据后,会留下一个 “回车符”(n),而 nextLine() 会直接读取这个回车符并视为空行,导致跳过输入。

解决:在 nextLine() 前先调用一次 sc.nextLine() 消耗掉回车符(如 2.3 中 nextLine() 的示例代码)。

问题 3:忘记关闭 Scanner 对象

现象:程序能正常运行,但会出现警告(“Resource leak: ‘sc’ is never closed”)。

解决读取完数据后,用 sc.close() 关闭对象(新手阶段可暂时忽略,不影响功能)。

sc.close(); // 放在所有输入操作之后
Java基础

Java编译和运行流程(javac和java命令)

2025-8-1 21:24:53

Java基础

标识符与关键字规则

2025-8-4 17:33:31

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
今日签到
有新私信 私信列表
搜索