本文目录导读:

我为您提供一个完整的Java机器人案例,包含多种经典实现,从简单到复杂:
基础机器人(控制台版)
// 简单的机器人控制台案例
public class SimpleRobot {
private String name;
private int x;
private int y;
private String direction;
public SimpleRobot(String name) {
this.name = name;
this.x = 0;
this.y = 0;
this.direction = "NORTH";
}
public void move() {
switch (direction) {
case "NORTH": y++; break;
case "SOUTH": y--; break;
case "EAST": x++; break;
case "WEST": x--; break;
}
System.out.println(name + " 移动到 (" + x + ", " + y + ")");
}
public void turnLeft() {
switch (direction) {
case "NORTH": direction = "WEST"; break;
case "WEST": direction = "SOUTH"; break;
case "SOUTH": direction = "EAST"; break;
case "EAST": direction = "NORTH"; break;
}
System.out.println(name + " 转向 " + direction);
}
public void turnRight() {
switch (direction) {
case "NORTH": direction = "EAST"; break;
case "EAST": direction = "SOUTH"; break;
case "SOUTH": direction = "WEST"; break;
case "WEST": direction = "NORTH"; break;
}
System.out.println(name + " 转向 " + direction);
}
public static void main(String[] args) {
SimpleRobot robot = new SimpleRobot("R2-D2");
robot.move();
robot.turnRight();
robot.move();
robot.turnLeft();
robot.move();
}
}
智能聊天机器人
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import java.util.Random;
public class ChatBot {
private String name;
private Map<String, String[]> responses;
private Random random;
public ChatBot(String name) {
this.name = name;
this.random = new Random();
initializeResponses();
}
private void initializeResponses() {
responses = new HashMap<>();
responses.put("hello", new String[]{
"你好!我是" + name + ",很高兴见到你!",
"嗨!有什么我可以帮助你的吗?",
"你好!今天过得怎么样?"
});
responses.put("how are you", new String[]{
"我很好,谢谢关心!你怎么样?",
"状态不错!感谢你问道。",
"作为一个机器人,我总是充满活力!"
});
responses.put("name", new String[]{
"我叫" + name + "!",
"我是" + name + ",很高兴认识你!"
});
responses.put("bye", new String[]{
"再见!希望很快再见到你!",
"拜拜!祝你有个美好的一天!",
"再见!我会想你的!"
});
responses.put("default", new String[]{
"我不太明白你的意思,能换个说法吗?",
"这个话题我不太熟悉,我们能聊点别的吗?",
"请告诉我更多关于这个的信息。"
});
}
public String getResponse(String input) {
String lower = input.toLowerCase();
// 关键词匹配
if (lower.contains("hello") || lower.contains("hi")) {
return getRandomResponse("hello");
} else if (lower.contains("how are you")) {
return getRandomResponse("how are you");
} else if (lower.contains("name")) {
return getRandomResponse("name");
} else if (lower.contains("bye") || lower.contains("goodbye")) {
return getRandomResponse("bye");
} else {
return getRandomResponse("default");
}
}
private String getRandomResponse(String key) {
String[] responsesArray = responses.get(key);
int index = random.nextInt(responsesArray.length);
return responsesArray[index];
}
public static void main(String[] args) {
ChatBot bot = new ChatBot("小智");
Scanner scanner = new Scanner(System.in);
System.out.println("欢迎来到聊天机器人!输入 'exit' 退出。");
System.out.println("=====================================");
while (true) {
System.out.print("你: ");
String input = scanner.nextLine();
if (input.equalsIgnoreCase("exit")) {
System.out.println("再见!");
break;
}
String response = bot.getResponse(input);
System.out.println(bot.name + ": " + response);
}
scanner.close();
}
}
完整机器人系统(面向对象设计)
import java.util.ArrayList;
import java.util.List;
// 传感器接口
interface Sensor {
String getData();
}
// 执行器接口
interface Actuator {
void execute(String command);
}
// 机器人基类
abstract class Robot {
protected String name;
protected int batteryLevel;
protected boolean isActive;
protected List<Sensor> sensors;
protected List<Actuator> actuators;
public Robot(String name) {
this.name = name;
this.batteryLevel = 100;
this.isActive = false;
this.sensors = new ArrayList<>();
this.actuators = new ArrayList<>();
}
public void addSensor(Sensor sensor) {
sensors.add(sensor);
System.out.println("添加传感器: " + sensor.getClass().getSimpleName());
}
public void addActuator(Actuator actuator) {
actuators.add(actuator);
System.out.println("添加执行器: " + actuator.getClass().getSimpleName());
}
public void start() {
if (batteryLevel > 0) {
isActive = true;
System.out.println(name + " 已启动");
} else {
System.out.println(name + " 电池电量不足,无法启动");
}
}
public void stop() {
isActive = false;
System.out.println(name + " 已停止");
}
public void recharge() {
batteryLevel = 100;
System.out.println(name + " 已充满电");
}
public void readSensors() {
if (!isActive) {
System.out.println(name + " 未启动,无法读取传感器数据");
return;
}
System.out.println(name + " 传感器数据:");
for (Sensor sensor : sensors) {
System.out.println("- " + sensor.getData());
}
}
public abstract void performTask();
}
// 温度传感器
class TemperatureSensor implements Sensor {
private double temperature;
public TemperatureSensor() {
this.temperature = 20.0;
}
@Override
public String getData() {
temperature += (Math.random() - 0.5) * 2;
return "温度: " + String.format("%.1f", temperature) + "°C";
}
}
// 距离传感器
class DistanceSensor implements Sensor {
private int distance;
public DistanceSensor() {
this.distance = 100;
}
@Override
public String getData() {
distance = (int)(Math.random() * 200);
return "距离: " + distance + "cm";
}
}
// 电机执行器
class MotorActuator implements Actuator {
@Override
public void execute(String command) {
System.out.println("电机执行: " + command);
}
}
// 机械臂执行器
class ArmActuator implements Actuator {
@Override
public void execute(String command) {
System.out.println("机械臂执行: " + command);
}
}
// 具体机器人实现
class CleaningRobot extends Robot {
public CleaningRobot() {
super("清洁机器人");
addSensor(new DistanceSensor());
addActuator(new MotorActuator());
}
@Override
public void performTask() {
if (isActive) {
System.out.println(name + " 正在清洁地板...");
// 模拟清洁动作
for (Actuator actuator : actuators) {
actuator.execute("移动和清洁");
}
batteryLevel -= 10;
System.out.println("清洁完成,电量剩余: " + batteryLevel + "%");
}
}
}
class CookingRobot extends Robot {
public CookingRobot() {
super("烹饪机器人");
addSensor(new TemperatureSensor());
addActuator(new ArmActuator());
}
@Override
public void performTask() {
if (isActive) {
System.out.println(name + " 正在准备料理...");
for (Actuator actuator : actuators) {
actuator.execute("混合食材");
}
batteryLevel -= 15;
System.out.println("料理完成,电量剩余: " + batteryLevel + "%");
}
}
}
// 主测试类
public class RobotDemo {
public static void main(String[] args) {
System.out.println("===== 机器人演示系统 =====");
System.out.println();
// 创建清洁机器人
System.out.println("--- 清洁机器人 ---");
CleaningRobot cleaningRobot = new CleaningRobot();
cleaningRobot.start();
cleaningRobot.performTask();
cleaningRobot.readSensors();
System.out.println();
// 创建烹饪机器人
System.out.println("--- 烹饪机器人 ---");
CookingRobot cookingRobot = new CookingRobot();
cookingRobot.start();
cookingRobot.performTask();
cookingRobot.readSensors();
System.out.println();
// 电量不足演示
System.out.println("--- 电量管理 ---");
cleaningRobot.performTask();
cleaningRobot.stop();
cleaningRobot.recharge();
cleaningRobot.start();
cleaningRobot.stop();
// 批量操作
System.out.println("\n--- 批量机器人操作 ---");
List<Robot> robots = new ArrayList<>();
robots.add(cleaningRobot);
robots.add(cookingRobot);
for (Robot robot : robots) {
System.out.println(robot.name + " 电池状态: " + robot.batteryLevel + "%");
}
}
}
图形界面机器人模拟器
import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
public class RobotSimulator extends JPanel {
private int robotX = 200;
private int robotY = 200;
private String direction = "RIGHT";
private int stepSize = 10;
public RobotSimulator() {
setPreferredSize(new Dimension(400, 400));
setBackground(Color.WHITE);
setFocusable(true);
addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
switch (e.getKeyCode()) {
case KeyEvent.VK_UP:
robotY -= stepSize;
direction = "UP";
break;
case KeyEvent.VK_DOWN:
robotY += stepSize;
direction = "DOWN";
break;
case KeyEvent.VK_LEFT:
robotX -= stepSize;
direction = "LEFT";
break;
case KeyEvent.VK_RIGHT:
robotX += stepSize;
direction = "RIGHT";
break;
}
repaint();
}
});
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
// 绘制网格
g.setColor(Color.LIGHT_GRAY);
for (int i = 0; i < getWidth(); i += 20) {
g.drawLine(i, 0, i, getHeight());
g.drawLine(0, i, getWidth(), i);
}
// 绘制机器人
g.setColor(Color.BLUE);
g.fillOval(robotX - 20, robotY - 20, 40, 40);
// 绘制方向指示
g.setColor(Color.RED);
g.fillOval(robotX - 5, robotY - 5, 10, 10);
// 显示坐标和方向
g.setColor(Color.BLACK);
g.drawString("位置: (" + robotX + ", " + robotY + ")", 10, 20);
g.drawString("方向: " + direction, 10, 40);
g.drawString("使用方向键移动机器人", 10, 60);
}
public static void main(String[] args) {
JFrame frame = new JFrame("机器人模拟器");
RobotSimulator simulator = new RobotSimulator();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new BorderLayout());
frame.add(simulator, BorderLayout.CENTER);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
simulator.requestFocus();
}
}
运行说明
编译运行
# 编译 javac SimpleRobot.java javac ChatBot.java javac RobotDemo.java javac RobotSimulator.java # 运行(任选一个) java SimpleRobot java ChatBot java RobotDemo java RobotSimulator
功能特点
| 案例 | 主要特点 | 适用场景 |
|---|---|---|
| SimpleRobot | 简单移动控制 | 学习基本语法 |
| ChatBot | 关键词匹配回答 | 了解自然语言处理 |
| RobotDemo | 面向对象设计 | 学习设计模式 |
| RobotSimulator | 图形界面交互 | 学习GUI编程 |
这些案例涵盖了Java的核心概念,包括面向对象、接口、集合、异常处理、GUI编程等,适合不同水平的学习者,您可以根据需要修改和扩展这些案例。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播