编写Java程序,模拟五子棋博弈过程中的异常声明和异常抛出

简介: 编写Java程序,模拟五子棋博弈过程中的异常声明和异常抛出

需求说明:


模拟五子棋博弈过程中的异常声明和异常抛出,判断用户所下棋子的位置,是否超越了棋盘的边界。

棋盘的横坐标的范围为0~9,纵坐标范围为0~14,如果用户所放棋子的坐标超出了坐标范围,捕获系统抛出的异常,给出友好的提示信息。


image.png


实现思路:


所放棋子的坐标超出了坐标范围异常处理的实现思路:


创建五子棋类GoBang,在该类中创建二维数组board,代表五子棋棋盘,二维数组长度为[10][15]。

在GoBang类中创建init()方法,该方法用于为二维数组赋值,二维数组的每一个数组元素值为“+”。

在GoBang类中创建下棋方法playChess(int x,int y),x和y分别代表棋盘的横坐标和纵坐标。如果x的值不在0~9,y的值不在0~14,则使用throw抛出异常。

在main方法中调用playChess(int x,int y),并将该方法放入try语句块,通过catch块的ArrayIndexOutOfBoundsException异常捕捉playChess(x, y)可能抛出的数值下标越界异常。


实现代码:


public void init(){ //棋盘格子初始化
  for(int i=0;i<10;i++){
    for(int j=0;j<15;j++){    
      board[i][j]="+";
    }
  }
    this.showBoard();
}
public void playChess(int x,int y) throws ArrayIndexOutOfBoundsException{   // 在棋盘坐标(x,y)处落棋子   
  board[x][y]="▇";
  showBoard(); //显示棋盘
 }
 public static void main(String[] args) {
  GoBang gb = new GoBang();
  gb.init();
  Scanner input=new Scanner(System.in);
  System.out.println("请输入所放棋子的横坐标:");
  int x=input.nextInt();
  System.out.println("请输入所放棋子的纵坐标:");
  int y=input.nextInt();
  try{ playChess(x, y); }
  catch(ArrayIndexOutOfBoundsException e){System.out.println("所放棋子横纵坐标的范围在0~9"); }
} 
public class FoodFactory {
   public static Food createFood(String type){
                        //通过传递的字符串参数判断用户需要的食物
                if(type.equals("mcchicken")) {
               return new McChicken();
                       }else if(type.equals("chips")) {
                       return new Chips();
              } else {
                       System.out.println("对不起没有该食物!");
                       return null;
            }
    }
}
public class Client {
  public static void main(String[] args) {
                //通过食物工厂创建食物
               Food mcchicken=FoodFactory.createFood("mcchicken");
               mcchicken.getFood();
                Food chips=FoodFactory.createFood("chips");
                chips.getFood();
  }
}
相关文章
|
12天前
|
Java 流计算
利用java8 的 CompletableFuture 优化 Flink 程序
本文探讨了Flink使用avatorscript脚本语言时遇到的性能瓶颈,并通过CompletableFuture优化代码,显著提升了Flink的QPS。文中详细介绍了avatorscript的使用方法,包括自定义函数、从Map中取值、使用Java工具类及AviatorScript函数等,帮助读者更好地理解和应用avatorscript。
利用java8 的 CompletableFuture 优化 Flink 程序
|
2天前
|
Java Maven 数据安全/隐私保护
如何实现Java打包程序的加密代码混淆,避免被反编译?
【10月更文挑战第15天】如何实现Java打包程序的加密代码混淆,避免被反编译?
12 2
|
2天前
|
安全 Java 数据安全/隐私保护
如何配置 Java 安全管理器来避免访问控制异常
配置Java安全管理器以防止访问控制异常,需在启动JVM时通过 `-Djava.security.manager` 参数启用,并设置安全策略文件,定义权限规则,限制代码执行操作,确保应用安全。
|
5天前
|
安全 Java Linux
java程序设置开机自启
java程序设置开机自启
|
8天前
|
Java
让星星⭐月亮告诉你,Java异常分类[Throwable(Error/Exception(RuntimeException/其他异常)) 检查时异常 非检查时异常]
本文深入解析了Java异常处理机制,重点介绍了`Throwable`类及其子类`Error`和`Exception`,并通过实例代码、流程图和表格详细解释了异常的分类、区别及处理方法,帮助读者掌握异常处理的关键技巧,提升程序的稳定性和健壮性。
24 1
|
8天前
|
运维 Java Linux
【运维基础知识】Linux服务器下手写启停Java程序脚本start.sh stop.sh及详细说明
### 启动Java程序脚本 `start.sh` 此脚本用于启动一个Java程序,设置JVM字符集为GBK,最大堆内存为3000M,并将程序的日志输出到`output.log`文件中,同时在后台运行。 ### 停止Java程序脚本 `stop.sh` 此脚本用于停止指定名称的服务(如`QuoteServer`),通过查找并终止该服务的Java进程,输出操作结果以确认是否成功。
14 1
|
13天前
|
Java 程序员
关于java异常
关于java异常
18 5
|
13天前
|
存储 Java 编译器
【一步一步了解Java系列】:认识异常类
【一步一步了解Java系列】:认识异常类
19 2
|
10天前
|
Java Python
如何通过Java程序调用python脚本
如何通过Java程序调用python脚本
11 0
|
13天前
|
安全 Java 编译器
Java异常
Java异常——Exception
15 0