上一篇
怎么在java中输入数据
- 后端开发
- 2025-07-14
- 4525

Java中输入数据可通过Scanner类读取控制台输入,或使用BufferedReader按行读取,也可从文件、网络等获取数据
Java中,输入数据的方式多种多样,每种方式都有其特定的应用场景和优势,以下是几种常见的输入数据方法及其详细解释:


| 输入方式 | 说明 | 示例代码 |
|---|---|---|
| Scanner类 | 从控制台、文件或字符串中读取数据,支持多种数据类型 | Scanner scanner = new Scanner(System.in); int number = scanner.nextInt(); |
| 命令行参数 | 通过main方法的args参数传递数据 |
public static void main(String[] args) { String input = args[0]; } |
| BufferedReader类 | 高效读取字符输入,适合处理大量数据 | BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); String line = reader.readLine(); |
| Console类 | Java 6引入,专门处理控制台输入输出 | Console console = System.console(); String str = console.readLine(); |
| JOptionPane对话框 | 图形界面下弹出输入对话框 | String str = JOptionPane.showInputDialog("input data:"); |
| 文件读取 | 从文件中读取数据,可使用FileReader、BufferedReader等 |
BufferedReader reader = new BufferedReader(new FileReader("input.txt")); |
| 网络接收 | 通过网络连接接收数据,如Socket编程 | Socket socket = new Socket("localhost", 8080); InputStreamReader isr = new InputStreamReader(socket.getInputStream()); |
Scanner类
基本使用
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Enter your age: ");
int age = scanner.nextInt();
System.out.println("Your age is: " + age);
}
}
处理不同类型的输入
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("Enter a string: ");
String str = scanner.nextLine();
System.out.println("Enter a double: ");
double dbl = scanner.nextDouble();
displayData(str, dbl);
}
public static void displayData(String str, double dbl) {
System.out.println("The string is: " + str);
System.out.println("The double is: " + dbl);
}
}
命令行参数
基本使用
public class Main {
public static void main(String[] args) {
if (args.length > 0) {
processInput(args[0]);
} else {
System.out.println("No input provided.");
}
}
public static void processInput(String input) {
System.out.println("Input provided: " + input);
}
}
处理多个命令行参数
public class Main {
public static void main(String[] args) {
for (String arg : args) {
processInput(arg);
}
if (args.length == 0) {
System.out.println("No input provided.");
}
}
public static void processInput(String input) {
System.out.println("Input provided: " + input);
}
}
BufferedReader类
从标准输入读取数据
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) {
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
System.out.print("Enter your name: ");
String name = reader.readLine();
System.out.print("Enter your age: ");
String ageStr = reader.readLine();
int age = Integer.parseInt(ageStr);
System.out.println("Name: " + name + ", Age: " + age);
} catch (IOException e) {
e.printStackTrace();
}
}
}
从文件读取数据
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class FileReaderExample {
public static void main(String[] args) {
try {
BufferedReader reader = new BufferedReader(new FileReader("input.txt"));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Console类
import java.io.Console;
public class ConsoleExample {
public static void main(String[] args) {
Console console = System.console();
if (console != null) {
char[] passwordArray = console.readPassword("Enter your password: ");
String password = new String(passwordArray);
System.out.println("Password entered: " + password);
} else {
System.out.println("No console available.");
}
}
}
JOptionPane对话框
import javax.swing.JOptionPane;
public class DataInputDialog {
public static void main(String[] args) {
String str = JOptionPane.showInputDialog("input data:");
if (str != null) {
int num = Integer.parseInt(str);
System.out.println(num);
}
}
}
文件读取(其他方式)
使用FileReader类
import java.io.FileReader;
import java.io.IOException;
public class FileReaderExample {
public static void main(String[] args) {
try {
FileReader reader = new FileReader("input.txt");
int data;
while ((data = reader.read()) != -1) {
System.out.print((char) data);
}
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
使用Scanner类读取文件
import java.io.File;
import java.util.Scanner;
public class FileScannerExample {
public static void main(String[] args) {
try {
Scanner scanner = new Scanner(new File("input.txt"));
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
System.out.println(line);
}
scanner.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
网络接收数据(Socket编程)
服务器端代码示例(简化版):
import java.net.ServerSocket;
import java.net.Socket;
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.IOException;
public class ServerExample {
public static void main(String[] args) {
try {
ServerSocket serverSocket = new ServerSocket(8080);
Socket clientSocket = serverSocket.accept(); // 等待客户端连接
BufferedReader reader = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
String line;
while ((line = reader.readLine()) != null) { // 读取客户端发送的数据
System.out.println("Received from client: " + line); // 打印接收到的数据到控制台
}
clientSocket.close(); // 关闭客户端套接字连接释放资源(实际应该在适当的时候关闭,这里只是简单示例)
serverSocket.close(); // 关闭服务器套接字释放资源(实际应该在适当的时候关闭,这里只是简单示例)
} catch (IOException e) {
e.printStackTrace(); // 打印异常堆栈跟踪信息以便调试错误原因(实际生产环境中应该有更完善的异常处理机制)
}
}
}
