欢迎光临
我们一直在努力

【Java SE】Java输入输出

本节学习目标

  • 熟练掌握控制台输出三种方式
  • 熟练使用Scanner完成键盘输入
  • 掌握 OJ 常见多组循环输入
  • 综合练习:猜数字小游戏
  • 1. 控制台输出

    Java 控制台输出三个核心方法

    System.out.println(msg); //输出内容,自带换行
    System.out.print(msg); //输出内容,**不换行**
    System.out.printf(format,参数); //格式化输出,用法类似C语言printf

    代码示例

    int x = 10;
    System.out.println("hello world");
    System.out.printf("x = %d\\n", x);

    常用格式化转换符

    表格

    转换符含义示例
    %d 十进制整数 printf("%d",100) →100
    %x 十六进制整数 printf("%x",100) →64
    %o 八进制整数 printf("%o",100) →144
    %f 浮点数 printf("%.2f",3.1415) →3.14
    %e 科学计数法输出浮点数 printf("%e",100.0) →1.000000e+02
    %s 字符串 printf("%s","Java") →Java
    %c 字符 printf("%c",'A') →A
    %b 布尔值 printf("%b",true) →true
    %% 输出百分号 printf("%.2f%%", 0.29) →0.29%

    💡不用死记表格,写代码需要的时候查阅文档即可。

    2. 键盘输入 Scanner

    使用 Scanner 需要导包:import java.util.Scanner;

    2.1 基础输入示例

    import java.util.Scanner;

    public class TestInput {
    public static void main(String[] args) {
    // 创建Scanner对象,从标准键盘读取输入
    Scanner sc = new Scanner(System.in);

    System.out.println("请输入你的姓名:");
    String name = sc.nextLine(); //读取一整行字符串

    System.out.println("请输入你的年龄:");
    int age = sc.nextInt(); //读取int整数

    System.out.println("请输入你的工资:");
    float salary = sc.nextFloat(); //读取float浮点数

    System.out.println("你的信息如下:");
    System.out.println("姓名: "+name+"\\n"+"年龄:"+age+"\\n"+"工资:"+salary);

    sc.close(); //用完记得关闭扫描器
    }
    }

    ⚠️经典坑:nextInt() /nextFloat()之后接nextLine() nextInt()只会读取数字,会把回车换行符残留在输入缓冲区,后面的nextLine()直接读到空字符串。 解决办法:

  • 数字读取完成后,调用一次sc.nextLine();吃掉残留换行;
  • 或者全部使用nextLine()读取字符串再做类型转换。
  • 2.2 多组输入(OJ 刷题高频)

    sc.hasNextInt():判断下一个输入是不是 int,有输入返回 true,没有输入结束循环。

    import java.util.Scanner;

    public class TestMultiInput {
    public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    int sum = 0;
    int count = 0;

    //不断读取整数,直到结束标记
    while (sc.hasNextInt()) {
    int tmp = sc.nextInt();
    sum += tmp;
    count++;
    }
    System.out.println("sum = " + sum);
    System.out.println("avg = " + (double)sum / count);
    sc.close();
    }
    }

    结束输入标记:

    • Windows CMD / IDEA 控制台:Ctrl + Z
    • Linux / Mac 终端:Ctrl + D 这个写法是在线 OJ 平台多组测试用例的标准写法。

    3. 综合实战:猜数字游戏

    游戏规则:

  • 系统随机生成 1‑100 之间整数;
  • 用户循环输入猜测数字;
  • 提示高了 / 低了;猜对输出提示,结束游戏。
  • 随机数类Random,导包:import java.util.Random; random.nextInt(100) → 生成范围 [0,99],想要 1‑100 需要 + 1。

    完整可运行代码:

    import java.util.Random;
    import java.util.Scanner;

    public class GuessGame {
    public static void main(String[] args) {
    Random random = new Random();
    Scanner sc = new Scanner(System.in);
    //生成 [1,100]随机数字
    int toGuess = random.nextInt(100) + 1;
    //System.out.println("答案:" + toGuess); //调试打开看答案

    while (true) {
    System.out.println("请输入猜测数字(1‑100):");
    int num = sc.nextInt();
    if (num < toGuess) {
    System.out.println("低了");
    } else if (num > toGuess) {
    System.out.println("高了");
    } else {
    System.out.println("猜对了!");
    break; //猜对跳出死循环,游戏结束
    }
    }
    sc.close();
    }
    }

    📝本篇核心考点总结

  • 输出:println()带换行;print()不换行;printf()格式化输出,和 C 语法相似。
  • Scanner使用前需要import java.util.Scanner;,创建对象Scanner sc = new Scanner(System.in);,用完sc.close()关闭。
  • 方法区分:
    • nextInt()、nextFloat():读取数字,不会吃掉末尾回车换行;
    • nextLine()读取一整行(包含空格),容易读到残留空行。
  • OJ 多组输入模板:while(sc.hasNextInt()){ … };Windows 结束Ctrl+Z,Mac/Linux 结束Ctrl+D。
  • Random.nextInt(n)生成[0, n‑1]整数;要得到[1‑100]写nextInt(100)+1。
  • 面试小问答 Q:sc.nextInt()之后调用sc.nextLine()为什么直接读到空字符串? A:nextInt()只读取数字,输入敲下的回车\\n留在缓冲区;nextLine()读到这个换行直接返回空字符串。需要额外调用一次sc.nextLine()消费换行。

    赞(0)
    未经允许不得转载:171主机测评 » 【Java SE】Java输入输出
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址