0Pricing
Java Academy · 课时

使用 Scanner 读取输入

从 System.in 读取用户输入

使用 Scanner 读取输入 是 CoddyKit 上的免费 Java Academy 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Java Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Java Academy 课程共包含 4 节课。

从键盘读取

为了读取用户输入的内容,Java 在 java.util 包中提供了 Scanner 类。您可以将它连接到 System.in,也就是标准输入流。

Scanner 可以简单地读取单词、行和数字。

创建 Scanner

传入 System.in 即可构造一个 Scanner。这里的示例使用固定字符串,因此无需输入即可运行,但相同的方法也适用于键盘输入。

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner("Hello");
        String word = scanner.next();
        System.out.println(word);
        scanner.close();
    }
}

读取单个单词

next() 会读取一个令牌,也就是读取直到下一个空白字符之前的文本。空格和换行会分隔令牌。

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner("apple banana cherry");
        System.out.println(scanner.next());
        System.out.println(scanner.next());
        scanner.close();
    }
}

读取整行

nextLine() 会读取直到行尾的全部内容,包括空格。当输入包含多个需要一起处理的单词时,请使用它。

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner("John Smith");
        String fullName = scanner.nextLine();
        System.out.println("Name: " + fullName);
        scanner.close();
    }
}

检查是否还有输入

只要还有更多令牌,hasNext() 就会返回 true。这样您就可以循环读取,直到输入耗尽。

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner("red green blue");
        while (scanner.hasNext()) {
            System.out.println(scanner.next());
        }
        scanner.close();
    }
}

逐行读取

将 hasNextLine() 与 nextLine() 配合使用,可以一次读取一行来处理多行输入。

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner("line one\nline two\nline three");
        while (scanner.hasNextLine()) {
            System.out.println("> " + scanner.nextLine());
        }
        scanner.close();
    }
}

实际键盘示例

对于实际的用户输入,您可以编写下面的代码行。请在本地尝试:程序会在 nextLine 处等待,直到您输入内容并按下 Enter 键。

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("Enter your name: ");
        String name = scanner.nextLine();
        System.out.println("Hello, " + name);
        scanner.close();
    }
}

关闭 Scanner

调用 close() 可以释放资源。更简洁的方式是使用 try-with-resources,这样代码块结束时会自动关闭 Scanner。

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        try (Scanner scanner = new Scanner("data here")) {
            System.out.println(scanner.next());
        }
    }
}

next 与 nextLine 的区别

请记住关键区别:next() 会在空白字符处停止并返回一个令牌,而 nextLine() 会读取当前行的剩余内容。

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner("first second third");
        System.out.println(scanner.next());
        System.out.println(scanner.nextLine());
        scanner.close();
    }
}

自定义分隔符

您可以使用 useDelimiter 更改令牌之间的分隔方式。在这里,值之间使用逗号而不是空白字符进行分隔。

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner("a,b,c");
        scanner.useDelimiter(",");
        while (scanner.hasNext()) {
            System.out.println(scanner.next());
        }
        scanner.close();
    }
}

Scanner 基础

在 System.in 上创建一个 Scanner,使用 next 读取单词,使用 nextLine 读取整行,使用 hasNext 系列方法循环读取,并始终将其关闭。

快速检查

请检验您对 Scanner 基础知识的掌握情况。

回顾

您已经学习了如何使用 Scanner 读取输入:

  • 使用 new Scanner(System.in) 创建它
  • next() 读取一个单词,nextLine() 读取整行
  • 使用 hasNext() 或 hasNextLine() 循环读取
  • 使用 close() 或 try-with-resources 将其关闭
  • useDelimiter 可以更改令牌分隔符

常见问题解答

「使用 Scanner 读取输入」课时是免费的吗?

是的 — 「使用 Scanner 读取输入」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Java Academy 课程的其余内容,请升级到 CoddyKit PRO。 Java Academy 课程共包含 4 节课。

「使用 Scanner 读取输入」这节课中我会学到什么?

从 System.in 读取用户输入 你通过在浏览器中直接运行的动手代码来练习 Java Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Java Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Java Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。

「使用 Scanner 读取输入」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Java Academy 课中编写并运行代码吗?

能。每节 Java Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 使用 Scanner 读取输入
  2. 读取数字与行
  3. 验证用户输入
  4. BufferedReader 替代方案
← 返回 Java Academy