2.4 基本输入输出

在 Java 中,输入输出操作是程序与用户或外部资源进行交互的关键环节。Java 提供了多个类和方法来支持基本的输入输出操作。本文将详细讲解 Java 中常用的输入输出方法,包括 ScannerSystem.inPrintStream,以及如何进行文件输入输出操作。

1. 输入操作

1.1 Scanner

Scanner 类是 Java 中非常常用的工具,用于从标准输入(如键盘)中读取数据。它可以处理不同类型的数据,包括字符串、整数、浮点数等。

1.1.1 基本使用

Scanner 类通过 System.in 读取输入数据,System.in 是 Java 的标准输入流,通常连接到键盘。

import java.util.Scanner;

public class InputDemo {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        // 读取字符串
        System.out.print("Enter your name: ");
        String name = scanner.nextLine();
        
        // 读取整数
        System.out.print("Enter your age: ");
        int age = scanner.nextInt();
        
        // 读取浮点数
        System.out.print("Enter your height (in meters): ");
        double height = scanner.nextDouble();

        // 输出输入结果
        System.out.println("Name: " + name);
        System.out.println("Age: " + age);
        System.out.println("Height: " + height + " meters");
        
        scanner.close();
    }
}

在上面的代码中:

  • Scanner scanner = new Scanner(System.in); 创建一个 Scanner 对象用于从标准输入读取数据。
  • scanner.nextLine(); 读取一行文本输入,适合读取字符串。
  • scanner.nextInt(); 读取一个整数。
  • scanner.nextDouble(); 读取一个浮点数。

这些方法使 Scanner 成为一个非常灵活且易用的输入工具。

2. 输出操作

2.1 System.out

System.out 是一个 PrintStream 对象,通常用于输出数据到控制台。最常用的输出方法有 print()println(),此外还有 printf() 方法用于格式化输出。

2.1.1 基本输出
public class OutputDemo {
    public static void main(String[] args) {
        // 输出字符串
        System.out.println("Hello, World!");

        // 输出整数
        int number = 42;
        System.out.println("The number is: " + number);

        // 输出浮点数
        double pi = 3.14159;
        System.out.printf("Value of pi: %.2f\n", pi);

        // 输出带有格式的文本
        String name = "Alice";
        int age = 30;
        System.out.printf("Name: %s, Age: %d\n", name, age);
    }
}

在上面的代码中:

  • System.out.println("Hello, World!"); 输出字符串并换行。
  • System.out.printf("Value of pi: %.2f\n", pi); 使用格式化字符串输出浮点数,保留两位小数。
  • System.out.printf("Name: %s, Age: %d\n", name, age); 使用格式化字符串输出多个变量的值。

3. 文件输入输出操作

Java 提供了多种类来处理文件输入输出操作,其中常用的包括 FileInputStreamFileOutputStream,用于处理二进制文件的输入输出;FileReaderFileWriter,用于处理字符文件的输入输出。

3.1 文件写入操作

FileWriter 类用于将文本写入文件。如果文件不存在,它将创建该文件;如果文件存在,则会覆盖该文件。

import java.io.FileWriter;
import java.io.IOException;

public class FileWriteExample {
    public static void main(String[] args) {
        try (FileWriter writer = new FileWriter("example.txt")) {
            writer.write("Hello, File!");
            System.out.println("Data written to file successfully.");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

3.2 文件读取操作

FileReader 类用于从文件中读取字符。如果文件不存在,会抛出 FileNotFoundException

import java.io.FileReader;
import java.io.IOException;

public class FileReadExample {
    public static void main(String[] args) {
        try (FileReader reader = new FileReader("example.txt")) {
            int character;
            while ((character = reader.read()) != -1) {
                System.out.print((char) character);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

在上面的示例中,文件中的内容将被逐个字符读取并打印到控制台。

4. 格式化输出中的常见占位符

在 Java 中,格式化输出通常使用 System.out.printfString.format 来实现。格式化字符串使用特定的格式指定符来控制输出格式。

4.1 常见格式指定符

  1. %d: 格式化整数

    int number = 123;
    System.out.printf("The number is: %d%n", number);
    
  2. %f: 格式化浮点数

    double pi = 3.14159;
    System.out.printf("The value of pi is: %.2f%n", pi);
    
  3. %s: 格式化字符串

    String name = "Alice";
    System.out.printf("Hello, %s!%n", name);
    
  4. %c: 格式化单个字符

    char initial = 'A';
    System.out.printf("The initial is: %c%n", initial);
    
  5. %x: 格式化整数为十六进制

    int number = 255;
    System.out.printf("The hex value is: %x%n", number);
    
  6. %o: 格式化整数为八进制

    int number = 63;
    System.out.printf("The octal value is: %o%n", number);
    
  7. %e: 格式化浮点数为科学计数法

    double value = 12345.6789;
    System.out.printf("The scientific notation is: %e%n", value);
    
  8. %g: 使用更紧凑的表示(%f%e)格式化浮点数

    double value = 12345.6789;
    System.out.printf("The value is: %g%n", value);
    
  9. %%: 输出百分号符号

    System.out.printf("This is 100%% complete.%n");
    

4.2 示例代码

以下示例演示了如何使用各种格式指定符进行输出:

public class FormatExample {
    public static void main(String[] args) {
        int age = 25;
        double height = 175.567;
        String name = "John";

        System.out.printf("Name: %s%n", name);               // 输出: Name: John
        System.out.printf("Age: %d years%n", age);            // 输出: Age: 25 years
        System.out.printf("Height: %.2f cm%n", height);       // 输出: Height: 175.57 cm
        System.out.printf("Hexadecimal: %x%n", age);          // 输出: Hexadecimal: 19
        System.out.printf("Octal: %o%n", age);                // 输出: Octal: 31
        System.out.printf("Scientific notation: %e%n", height); // 输出: Scientific notation: 1.755675e+02
        System.out.printf("Compact form: %g%n", height);      // 输出: Compact form: 175.568
        System.out.printf("Percentage: %d%% complete%n", 100); // 输出: Percentage: 100% complete
    }
}

5. 总结

Java 提供了丰富的输入输出操作工具,使得开发者可以轻松与用户或外部资源进行交互。通过 Scanner 类,您可以方便地从控制台读取各种类型的数据;通过 System.out,您可以将数据以多种格式输出到控制台;通过 FileReaderFileWriter,您可以进行简单的文件输入输出操作。掌握这些基本操作将使您在开发过程中更加得心应手。希望本文能够帮助您更好地理解和应用 Java 的输入输出操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TechCraft

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值