深入解析Java的输入输出操作

Java输入和输出

  • 前言
  • 一、Java打印Hello World
  • 二、输出到控制台
  • 基本语法
  • 代码示例
  • 格式化字符串
  • 三、从键盘输入
  • 读入一个字符
  • 正确写法
  • 使用 Scanner 读取字符串/整数/浮点数
  • 使用 Scanner 循环读取 N 个数字

  • 前言

    推荐一个网站给想要了解或者学习人工智能知识的读者,这个网站里内容讲解通俗易懂且风趣幽默,对我帮助很大。我想与大家分享这个宝藏网站,请点击下方链接查看。
    https://www.captainbed.cn/f1

    Java输入和输出涉及从各种来源(如键盘、文件等)读取数据以及将数据发送到各种目标(如屏幕、文件等)。Java提供了多种流类(如InputStreamOutputStream)来处理这些操作,允许开发者以灵活和高效的方式处理数据输入输出。


    一、Java打印Hello World

    新生婴儿会以自己独特的方式向这个崭新的世界打招呼,Java刚出来后,也算是一个新事物,

    那Java是否也应该向这个美好的世界来声问候呢?

    我们来看下Java是如何来实现问候的。

    public static void main(String[] args) {
        System.out.println("Hello World");
    }
    

    二、输出到控制台

    基本语法

    System.out.println(msg); // 输出一个字符串, 带换行 
    System.out.print(msg);// 输出一个字符串, 不带换行 
    em.out.printf(format, msg); // 格式化输出 
    
  • println 输出的内容自带 \n, print 不带 \n
  • printf 的格式化输出方式和 C 语言的 printf 是基本一致的.
  • 代码示例

    public static void main(String[] args) {
        System.out.println("hello world");
        int x = 10;
        System.out.printf("x = %d\n", x);
    }
    

    格式化字符串

    转换符 类型 举例
    d 十进制整数 ("%d", 100) 100
    x 十六进制整数 ("%x", 100) 64
    o 八进制整数 ("%o", 100) 144
    f 定点浮点数 ("%f", 100f) 100.000000
    e 指数浮点数 ("%e", 100f) 1.000000e+02
    g 通用浮点数 ("%g", 100f) 100.000
    a 十六进制浮点数 ("%a", 100) 0x1.9p6
    s 字符串 ("%s", 100) 100
    c 字符 ("%c", ‘1’) 1
    b 布尔值 ("%b", 100) true
    h 散列码 ("%h", 100) 64
    % 百分号 ("%.2f%%", 2/7f) 0.29%

    三、从键盘输入

    读入一个字符

    直接使用 System.in.read 可以读入一个字符.

    但是需要搭配异常处理

    public static void main(String[] args) {
        System.out.print("Enter a Char:");
        char i = (char) System.in.read();
        System.out.println("your char is :"+i);
    }
    

    正确写法

    import java.io.IOException;// 需要导入 IOException 包
    public static void main(String[] args) {
        try {
            System.out.print("Enter a Char:");
            char i = (char) System.in.read();
            System.out.println("your char is :"+i);
        } catch (IOException e) {
            System.out.println("exception");
        }
    }
    

    使用 Scanner 读取字符串/整数/浮点数

    import java.util.Scanner; // 需要导入 util 包
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入你的姓名:");
        String name = sc.nextLine();
        System.out.println("请输入你的年龄:");
        int age = sc.nextInt();
        System.out.println("请输入你的工资:");
        float salary = sc.nextFloat();
        System.out.println("你的信息如下:");
        System.out.println("姓名: "+name+"\n"+"年龄:"+age+"\n"+"工资:"+salary);
        sc.close(); // 注意, 要记得调用关闭方法
    }
    


    这段代码是一个简单的Java程序。它使用了Scanner类来从用户输入中获取数据。

    首先,我们导入了java.util.Scanner类,这是一个可以从标准输入中读取数据的工具类。

    然后,在main方法中,我们创建了一个Scanner对象sc来读取用户的输入。通过调用nextLine()方法,我们可以获取用户输入的姓名并将其保存在name变量中。接下来,通过调用nextInt()方法,我们获取用户输入的年龄并保存在age变量中。最后,通过调用nextFloat()方法,我们获取用户输入的工资并保存在salary变量中。

    然后,我们输出了用户输入的信息。通过使用"+"操作符,我们将字符串和变量连接起来输出。

    最后,我们调用了sc.close()方法来关闭Scanner对象,这是一个好的习惯,以释放资源并避免内存泄漏。

    这样,程序就会等待用户输入,并将输入的姓名、年龄和工资打印出来。

    使用 Scanner 循环读取 N 个数字

    import java.util.Scanner; // 需要导入 util 包
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        double sum = 0.0;
        int num = 0;
        while (sc.hasNextDouble()) {
            double tmp = sc.nextDouble();
            sum += tmp;
            num++;
        }
        System.out.println("sum = " + sum);
        System.out.println("avg = " + sum / num);
        sc.close();
    }
    

    这段代码是一个简单的Java程序,它使用了Scanner类从用户输入中获取一系列的浮点数,并计算它们的总和和平均值。

    首先,我们导入了java.util.Scanner类,这是一个用于从标准输入中读取数据的工具类。

    然后,在main方法中,我们创建了一个Scanner对象sc来读取用户的输入。接下来,我们初始化了两个变量sumnum,用于保存浮点数的总和和数量。

    然后,我们使用一个while循环来判断用户是否还输入了一个浮点数。通过调用sc.hasNextDouble()方法,我们可以判断下一个输入是否是一个浮点数。只要用户输入的还是浮点数,循环就会继续执行。

    在循环体内,我们调用sc.nextDouble()方法来获取用户输入的浮点数,并将其保存在临时变量tmp中。然后我们将tmp的值累加到sum变量中,同时将num加1以记录输入的数量。

    当用户输入结束后,也就是不再输入浮点数时,循环将会终止。此时,我们输出sum变量的值作为浮点数的总和,并通过sum / num计算出浮点数的平均值。

    最后,我们调用sc.close()方法来关闭Scanner对象,这是一个好的习惯,以释放资源并避免内存泄漏。

    这样,程序会一直等待用户输入浮点数,并计算它们的总和和平均值,直到没有更多的输入为止。

    ps:当循环输入多个数据的时候, 使用 ctrl + z 来结束输入 (Windows 上使用 ctrl + z, Linux / Mac 上使用 ctrl +d)


    作者:鲜于言悠905

    物联沃分享整理
    物联沃-IOTWORD物联网 » 深入解析Java的输入输出操作

    发表回复