**8.19(模式识别:四个连续相等的数)编写下面的方法,测试一个二维数组是否有四个连续相等的数字(水平、垂直、对角线方向都可以)。编写一个测试程序,提示用户输入一个数组

  • 题目
    • 题目描述与运行实例
    • 破题
  • 代码

题目

题目描述与运行实例

**8.19(模式识别:四个连续相等的数)编写下面的方法,测试一个二维数组是否有四个连续相等的数字(水平、垂直、对角线方向都可以):
public static boolean isConsecutiveFour(int[][] values)
编写一个测试程序,提示用户输入一个二维数组的行数、列数以及数组中的值
如果这个数组中有四个连续相等的数组,就显示true;反之显示false
如下是显示true的例子:

请输入数组行数、列数:
6 7
请输入数组元素:
0 1 0 3 1 6 1
0 1 6 8 6 0 1
5 6 2 1 8 2 9
6 5 6 1 1 9 1
1 3 6 1 4 0 7
3 3 3 3 4 0 7
true
请输入数组行数、列数:
6 7
请输入数组元素:
0 1 0 3 1 6 1
0 1 6 8 6 0 1
5 5 2 1 8 2 9
6 5 6 1 1 9 1
1 5 6 1 4 0 7
3 5 3 3 4 0 7
true
请输入数组行数、列数:
6 7
请输入数组元素:
0 1 0 3 1 6 1
0 1 6 8 6 0 1
5 6 2 1 6 2 9
6 5 6 6 1 9 1
1 3 6 1 4 0 7
3 6 3 3 4 0 7
true
请输入数组行数、列数:
6 7
请输入数组元素:
0 1 0 3 1 6 1
0 1 6 8 6 0 1
9 6 2 1 8 2 9
6 9 6 1 1 9 1
1 3 9 1 4 0 7
3 3 3 9 4 0 7
true

破题

  1. 主方法:接收用户输入,使用int接收行数、列数
  2. 主方法:声明一个二维数组,长度为刚刚接收的行数*列数
  3. 主方法:使用循环接收用户输入的数组元素
  4. 主方法:调用方法isConsecutiveFour,传入数组
  5. 主方法:使用条件判断语句判断方法返回值,根据结果返回不同boolean值
  6. 方法isConsecutiveFour:先获取values数组的行数、列数
  7. 方法isConsecutiveFour:分别对数组的行、列进行遍历,寻找是否有重复元素;再对数组对角线进行遍历,看是否能找到
  8. 方法isConsecutiveFour:如果找到返回true,找不到返回false

代码

import java.util.Scanner;public class Test8_19 {public static void main(String[] args) {//1. 主方法:接收用户输入,使用int接收行数、列数Scanner input = new Scanner(System.in);System.out.println("请输入数组行数、列数:");int array_row = input.nextInt();int array_col = input.nextInt();//2. 主方法:声明一个二维数组,长度为刚刚接收的行数*列数int[][] array = new int[array_row][array_col];//3. 主方法:使用循环接收用户输入的数组元素System.out.println("请输入数组元素:");for (int i = 0 ; i < array_row ; i++){for (int j = 0 ; j < array_col ; j++){array[i][j] = input.nextInt();}}//4. 主方法:调用方法isConsecutiveFour,传入数组//5. 主方法:使用条件判断语句判断方法返回值,根据结果返回不同boolean值if ( isConsecutiveFour(array) ){System.out.println("true");} else {System.out.println("false");}}public static boolean isConsecutiveFour(int[][] values){//6. 方法isConsecutiveFour:先获取values数组的行数、列数int row = values.length;int col = values[0].length;//7. 方法isConsecutiveFour:分别对数组的行、列进行遍历,寻找是否有重复元素;再对数组两条对角线进行遍历,看是否能找到// 行遍历:如果找到返回truefor (int i = 0 ; i < row ; i++){for (int j = 0 ; j < col - 3 ; j++){if ( values[i][j] == values[i][j+1] && values[i][j+1] == values[i][j+2]&& values[i][j+2] == values[i][j+3])return true;}}// 列遍历for (int j = 0 ; j < col ; j++){for (int i = 0 ; i < row - 3 ; i++){if ( values[i][j] == values[i+1][j] && values[i+1][j] == values[i+2][j]&& values[i+2][j]== values[i+3][j])return true;}}// 左下到右上的对角线for (int i = 3 ; i < row ; i++){for (int j = 0 ; j < col - 3 ; j++){if (values[i][j] == values[i-1][j+1] && values[i-1][j+1] == values[i-2][j+2]&& values[i-2][j+2]== values[i-3][j+3])return true;}}// 左上到右下的对角线for (int i = 0 ; i < row - 3 ; i++){for (int j = 0 ; j < col - 3 ; j++){if (values[i][j] == values[i+1][j+1] && values[i+1][j+1] == values[i+2][j+2]&& values[i+2][j+2] == values[i+3][j+3])return true;}}//8. 方法isConsecutiveFour:如果找到返回true,找不到返回falsereturn false;}
}

Java黑皮书课后题第8章:**8.19(模式识别:四个连续相等的数)编写下面的方法,测试一个二维数组是否有四个连续相等的数字(水平、垂直、对角线方向都可以)。编写一个测试程序,提示用户输入一个数组相关推荐

  1. Java黑皮书课后题第7章:7.9(找出最小元素)使用下面的方法头编写一个方法,求出一个整数数组中的最小元素。编写测试程序,提示用户输入10个数字,调用这个方法返回最小值,并显示这个最小值

    7.9(找出最小元素)使用下面的方法头编写一个方法,求出一个整数数组中的最小元素.编写测试程序,提示用户输入10个数字,调用这个方法返回最小值,并显示这个最小值 题目 题目描述与运行示例 破题 代码 ...

  2. Java黑皮书课后题第6章:*6.5(对三个数排序)使用下面的方法头编写方法,按升序显示三个数

    *6.5(对三个数排序)使用下面的方法头编写方法,按升序显示三个数 题目 题目概述 破题 代码:排序 运行结果 题目 题目概述 *6.5(对三个数排序)使用下面的方法头编写方法,按升序显示三个数: p ...

  3. Java黑皮书课后题第10章:*10.1(Time类)设计一个名为Time的类。编写一个测试程序,创建两个Time对象(使用new Time()和new Time(555550000))

    Java黑皮书课后题第10章:*10.1设计一个名为Time的类.编写一个测试程序,创建两个Time对象 题目 程序 代码 Test1.java Test1_Time.java 运行结果 UML 题目 ...

  4. Java黑皮书课后题第9章:*9.6(秒表)设计一个名为StopWatch的类,该类包含……。编写一个测试程序,用于测量使用选择排序对100000个数字进行排序的执行时间

    Java黑皮书课后题第9章:*9.6(秒表)设计一个名为StopWatch的类,该类包含--.编写一个测试程序,用于测量使用选择排序对100000个数字进行排序的执行时间 题目 破题 代码 Test6 ...

  5. Java黑皮书课后题第9章:*9.4(使用Random类)编写一个程序,创建一个种子为1000的Random对象,然后使用nextInt(100)方法显示0到100之间的前50个随机整数

    Java黑皮书课后题第9章:*9.4(使用Random类)编写一个程序,创建一个种子为1000的Random对象,然后使用nextInt方法显示0到100之间的前50个随机整数 题目 赘述 代码 题目 ...

  6. Java黑皮书课后题第9章:*9.3(使用Date类)编写程序创建一个Date对象,设置它的流逝时间分别为...,然后使用toString()方法分别显示上述日期

    Java黑皮书课后题第9章:*9.3(使用Date类)编写程序创建一个Date对象,设置它的流逝时间分别为...,然后使用toString方法分别显示上述日期 题目 代码 思路 代码 题目 代码 思路 ...

  7. Java黑皮书课后题第1章:1.12(以千米计的平均速度)假设一个跑步者1小时40分35秒跑了24英里。编写一个程序显示以每小时为多少千米为单位的平均速度值(1英里等于1.6千米)

    Java黑皮书课后题第1章:1.12(以千米计的平均速度) 题目 题目描述 破题 代码块 修改日志 题目 题目描述 1.12(以千米计的平均速度)假设一个跑步者1小时40分35秒跑了24英里.编写一个 ...

  8. Java黑皮书课后题第1章:*1.11(人口估算)编写一个程序,显示未来5年的每年人口数。假设当前的人口是312 032 486,每年有365天

    Java黑皮书课后题第1章:*1.11(人口估算) 题目 题目描述 破题 代码块 方法评析 为什么print函数内的表达式不能分开 修改日志 题目 题目描述 *1.11(人口估算)编写一个程序,显示未 ...

  9. Java黑皮书课后题第1章:1.7(求π的近似值)编写程序,显示4*(1-1/3+1/5-1/7+1/9-1/11【+1/13】)

    Java黑皮书课后题第1章:1.7(求π的近似值) 题目描述 代码 代码块 评析 修改日志 题目描述 可以使用以下公式计算π: [手动空格]π=4*(1-1/3+1/5-1/7+1/9-1/11+-) ...

  10. Java黑皮书课后题第1章:1.6(数列求和)编写程序,显示1+2+3+4+5+6+7+8+9的结果

    Java黑皮书课后题第1章:1.6(数列求和) 题目 题目描述 槽点 代码 代码块 区分println(x)与println("x") 法1法2选用 修改日志 题目 题目描述 1. ...

最新文章

  1. 是什么给了150万开发者拥抱深度学习的底气?
  2. Docker源码分析(十):Docker镜像下载
  3. 数据库------求职必看
  4. Python函数定义和函数调用
  5. ubuntu18.04安装QQ-for-Linux
  6. JavaScript调用ATL COM(二)
  7. 由手机上网带来病毒引发的三大疑问?
  8. ueditor百度富文本编辑器linux下报错: class path resource [config.json] cannot be resolved to absolute file path
  9. 【剑指offer】面试题68 - I:二叉树的最近公共祖先(Java)
  10. java asm jndi_GitHub - Q1ngShan/JNDI: JNDI 注入利用工具
  11. 双数据源配置(一个项目中链接两个数据库)
  12. shell监控脚本-监控mysql 主从复制
  13. 决策树(八)--随机森林及OpenCV源码分析
  14. You辉编程_用vue3.0开发移动app的流程
  15. 第一章 python基础
  16. 【移动端】企业微信移动app测试实战
  17. catia 二次开发:环境变量路径,检查路径存在,关闭文件,对象为空,获取pad对象,err,part的product,全局变量,常量,SystemService,input,选择文件 时间,函数调用
  18. 数据分析笔试经典sql题解
  19. 【数仓】数据仓库高频面试题题英文版(1)
  20. Android Studio导入工程项目一直处于gradle....而且一直卡在这个页面

热门文章

  1. mysql数据库恢复数据_【技术分享】使用Innodb存储引擎的mysql数据库恢复
  2. 基类指针调用派生类函数_C++ 多态性:虚函数--基类与派生类类型转换(第7章 05)例子问题解析(学习笔记:第8章 05)...
  3. 函数计算搭建小程序Web应用后端服务
  4. 实时数仓入门训练营:实时计算 Flink 版 SQL 实践
  5. 云原生不仅颠覆了技术栈,背后的每个岗位也在悄然发生改变
  6. 客户端证书错误避坑指南
  7. 叮!快收好这份Android网络性能监控方案
  8. 复杂业务如何保证Flutter的高性能高流畅度?
  9. 浅谈游戏视觉包装中的“情感化设计”
  10. 我的Go+语言初体验——ubuntu安装Go+环境问题锦集(二)