一篇文章让你学会Java之输入与输出基础语法


在 Java 中,输入和输出是常见的操作,通常会用到标准输入输出流。我们可以通过 System.out 来进行输出,使用 Scanner 类来进行输入。

一、输出语句

Java 中的输出主要通过 System.out 来完成。System.outPrintStream 类型的对象,可以调用它的多个方法来实现不同的输出需求。

1. System.out.print()System.out.println()

  • System.out.print():输出数据后,不会自动换行。
  • System.out.println():输出数据后,会自动换行。

详细说明:

  • System.out.print():用于连续输出多个内容时,输出内容会紧跟在一起,不添加换行符。
  • System.out.println():输出完数据后,会自动追加一个换行符,使得下一次输出开始于新的一行。
public class Main {
    public static void main(String[] args) {
        System.out.print("Hello, ");
        System.out.print("world!");  // 输出后不换行
        System.out.println(" Welcome to Java!");  // 输出后换行
        System.out.print("This is a test.");
    }
}

输出结果:

Hello, world! Welcome to Java!
This is a test.

2. System.out.printf() —— 格式化输出

printf() 是 Java 中用于格式化输出的函数,它的功能和 C 语言中的 printf() 类似。它允许你控制输出的格式,例如指定小数位数、输出宽度、对齐方式等。

常见格式化符号:

  • %d:用于输出整数。
  • %f:用于输出浮点数,默认保留 6 位小数。
  • %.nf:用于指定浮点数的精度(保留 n 位小数)。
  • %s:用于输出字符串。
  • %x:输出十六进制整数。
  • %c:输出字符。

示例:

public class Main {
    public static void main(String[] args) {
        int num = 10;
        double price = 123.45678;
        String name = "Alice";

        // 输出整数
        System.out.printf("The number is: %d\n", num);

        // 输出浮点数,保留两位小数
        System.out.printf("The price is: %.2f\n", price);

        // 输出字符串
        System.out.printf("Hello, %s!\n", name);

        // 输出十六进制数
        System.out.printf("The number in hex: %x\n", num);
    }
}

输出结果:

The number is: 10
The price is: 123.46
Hello, Alice!
The number in hex: a

详细说明:

  • %d 用于输出整数。
  • %.2f 用于输出浮点数并保留 2 位小数。
  • %s 用于输出字符串。
  • %x 用于输出十六进制表示的整数。

3. System.out.format() —— 格式化输出(等同于 printf

System.out.format()printf() 方法功能相同,只是名字不同。可以互换使用。

System.out.format("The number is: %d\n", num);

二、输入语句

在 Java 中,最常用的输入方法是通过 Scanner 类来进行读取。Scanner 类位于 java.util 包中,可以方便地读取不同类型的数据,如字符串、整数、浮点数等。

1. 导入 Scanner

要使用 Scanner 类,首先需要导入 java.util.Scanner 包。

import java.util.Scanner;

2. 创建 Scanner 对象

Scanner scanner = new Scanner(System.in);

System.in 表示从标准输入流(键盘)读取数据。

3. 读取不同类型的数据

Scanner 提供了许多方法,用来读取不同类型的输入数据:

  • 读取字符串nextLine()next()
  • 读取整数nextInt()
  • 读取浮点数nextDouble()
  • 读取单个字符next().charAt(0)
  • 读取布尔值nextBoolean()

具体使用:

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 + "!");

        // 读取整数
        System.out.print("Enter your age: ");
        int age = scanner.nextInt();  // 输入整数
        System.out.println("You are " + age + " years old.");

        // 读取浮点数
        System.out.print("Enter your weight: ");
        double weight = scanner.nextDouble();  // 输入浮点数
        System.out.println("Your weight is " + weight + " kg.");

        // 读取布尔值
        System.out.print("Are you a student? (true/false): ");
        boolean isStudent = scanner.nextBoolean();  // 输入布尔值
        System.out.println("Are you a student? " + isStudent);
    }
}

输入与输出:

Enter your name: John
Hello, John!
Enter your age: 25
You are 25 years old.
Enter your weight: 70.5
Your weight is 70.5 kg.
Are you a student? (true/false): true
Are you a student? true

4. 注意事项

  • nextLine() vs next()

    • nextLine() 读取整个一行输入,包括空格。
    • next() 只读取单个词,遇到空格时就停止。
  • 输入类型不匹配:如果你输入的数据类型不匹配,Scanner 会抛出异常。例如,如果你使用 nextInt() 输入一个非数字字符,它会抛出 InputMismatchException 异常。

例子:

System.out.print("Enter an integer: ");
int num = scanner.nextInt();  // 如果输入非数字,则会抛出异常
  • 清理输入流:在使用 nextInt()nextDouble() 等方法读取数字后,如果紧接着使用 nextLine() 读取字符串,可能会遇到问题。这是因为前一个 nextInt() 会读取数字,但换行符(Enter)会留在输入流中。此时可以调用 nextLine() 来清理输入流中的换行符。
scanner.nextLine();  // 读取并丢弃换行符

三、综合示例

我们来写一个稍微复杂的示例,涵盖所有常见的输入输出操作。

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.print("Enter your age: ");
        int age = scanner.nextInt();

        // 清理换行符
        scanner.nextLine();

        System.out.print("Enter your address: ");
        String address = scanner.nextLine();

        // 获取数字信息
        System.out.print("Enter your height (in meters): ");
        double height = scanner.nextDouble();

        System.out.print("Enter your weight (in kg): ");
        double weight = scanner.nextDouble();

        // 计算 BMI
        double bmi = weight / (height * height);

        // 输出用户信息
        System.out.println("\n=== User Information ===");
        System.out.println("Name: " + name);
        System.out.println("Age: " + age);
        System.out.println("Address: " + address);
        System.out.printf("Height: %.2f meters\n", height);
        System.out.printf("Weight: %.2f kg\n", weight);
        System.out.printf("BMI: %.2f\n", bmi);
    }
}

总结

  • 输出:
    • System.out.print()System.out.println() 用于输出基本数据。
    • System.out.printf()System.out.format() 用于格式化输出。
  • 输入:
    • Scanner 类用于从控制台接收输入,支持读取不同类型的数据。
    • 需要特别注意输入后输入流的清理,避免因换行符等问题导致后续输入错误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

凭君语未可

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

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

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

打赏作者

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

抵扣说明:

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

余额充值