Java输入输出基础语法详解:一篇文章助你轻松掌握
输入输出
在 Java 中,输入和输出是常见的操作,通常会用到标准输入输出流。我们可以通过 System.out 来进行输出,使用 Scanner 类来进行输入。
一、输出语句
Java 中的输出主要通过 System.out 来完成。System.out 是 PrintStream 类型的对象,可以调用它的多个方法来实现不同的输出需求。
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 类用于从控制台接收输入,支持读取不同类型的数据。作者:凭君语未可