Java输入输出基础语法详解:一篇文章助你轻松掌握

输入输出

  • 一、输出语句
  • 1. `System.out.print()` 和 `System.out.println()`
  • 2. `System.out.printf()` —— 格式化输出
  • 3. `System.out.format()` —— 格式化输出(等同于 `printf`)
  • 二、输入语句
  • 1. 导入 `Scanner` 类
  • 2. 创建 `Scanner` 对象
  • 3. 读取不同类型的数据
  • 4. 注意事项
  • 三、综合示例
  • 总结
  • 在 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 类用于从控制台接收输入,支持读取不同类型的数据。
  • 需要特别注意输入后输入流的清理,避免因换行符等问题导致后续输入错误。
  • 作者:凭君语未可

    物联沃分享整理
    物联沃-IOTWORD物联网 » Java输入输出基础语法详解:一篇文章助你轻松掌握

    发表回复