晚上闲来无事,刚装了一个ylmf的os,里面有个小游戏,九宫格,以前知道这个游戏没玩过,LP想玩玩就陪她看看,每个格子都用同样的方法计算,就写了一段代码来计算,呵呵,只能计算最简单的,复杂一点的还没研究。好了废话少说直接上代码,没有注释请大家原谅:

(解释下,把九宫格写成一个字符串,没有填写数字的为O,每一行用逗号隔开,每行中数字用空格隔开)

package com.jgg;public class CalcJGG {/*** @param args*/public static void main(String[] args) {JGG jgg = new JGG();jgg.init("7 6 8 3 2 5 1 4 9,3 4 1 0 9 0 2 5 6,2 9 5 1 6 4 0 8 0,9 1 2 0 5 6 4 3 0,6 8 3 0 0 0 0 2 0,4 5 7 2 0 0 0 6 0,5 7 4 6 3 9 8 1 2,1 3 9 5 8 2 6 7 4,8 2 6 4 7 1 0 9 0");jgg.out();jgg.calc();System.out.println("计算结果:");jgg.out();}
}package com.jgg;import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;public class JGG {private int[][] jgg;private boolean isOut = false;private boolean isNotCalc = false;public JGG_bak() {jgg = new int[9][9];}public void init(String str) {String[] arrStr = str.split(",");for (int i = 0; i < arrStr.length; i++) {String[] tmpArr = arrStr[i].split(" ");for (int j = 0; j < tmpArr.length; j++) {jgg[i][j] = Integer.parseInt(tmpArr[j]);}}}public void calc() {while (!isWin()) {isNotCalc = true;for (int i = 0; i < 9; i++) {for (int j = 0; j < 9; j++) {if (jgg[i][j] == 0) {List<Integer> rows = row(i);if (isFind(rows, i, j)) {continue;}List<Integer> cols = column(j);if (isFind(cols, i, j)) {continue;}List<Integer> colRow = colRow(i, j);if (isFind(colRow, i, j)) {continue;}List<Integer> tmpList = compare(rows, cols);if (isFind(tmpList, i, j)) {continue;}List<Integer> result = compare(tmpList, colRow);isFind(result, i, j);}}}if (isNotCalc) {System.out.println("对不起,不能计算!");break;}}}public List<Integer> row(int i) {List<Integer> tmpList = new ArrayList<Integer>();int[] tmpInt = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 };for (int j = 0; j < 9; j++) {if (jgg[i][j] != 0) {for (int k = 0; k < tmpInt.length; k++) {if (tmpInt[k] == jgg[i][j]) {tmpInt[k] = 0;break;}}}}for (int j = 0; j < tmpInt.length; j++) {if (tmpInt[j] != 0) {tmpList.add(tmpInt[j]);}}return tmpList;}public List<Integer> column(int j) {List<Integer> tmpList = new ArrayList<Integer>();int[] tmpInt = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 };for (int i = 0; i < 9; i++) {if (jgg[i][j] != 0) {for (int k = 0; k < tmpInt.length; k++) {if (tmpInt[k] == jgg[i][j]) {tmpInt[k] = 0;break;}}}}for (int i = 0; i < tmpInt.length; i++) {if (tmpInt[i] != 0) {tmpList.add(tmpInt[i]);}}return tmpList;}public List<Integer> colRow(int i, int j) {List<Integer> tmpList = new ArrayList<Integer>();int[] tmpInt = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 };int startRow = (i / 3) * 3;int startCol = (j / 3) * 3;for (int k = startRow; k < (startRow + 3); k++) {for (int m = startCol; m < (startCol + 3); m++) {if (jgg[k][m] != 0) {for (int index = 0; index < tmpInt.length; index++) {if (tmpInt[index] == jgg[k][m]) {tmpInt[index] = 0;break;}}}}}for (int m = 0; m < tmpInt.length; m++) {if (tmpInt[m] != 0) {tmpList.add(tmpInt[m]);}}return tmpList;}public List<Integer> compare(List<Integer> list1,List<Integer> list2) {List<Integer> tmpList = new ArrayList<Integer>();for (Iterator iter = list1.iterator(); iter.hasNext();) {int tmp = (Integer)iter.next();for (Iterator iter1 = list2.iterator(); iter1.hasNext();) {int tmp2 = (Integer)iter1.next();if (tmp == tmp2) {tmpList.add(tmp);break;}}}return tmpList;}public boolean isWin(){for (int i = 0; i < 9; i++) {for (int j = 0; j < 9; j++) {if (jgg[i][j] == 0) {return false;}}}return true;}public void out(){for (int i = 0; i < 9; i++) {for (int j = 0; j < 9; j++) {System.out.print(jgg[i][j] + " ");}System.out.println();}}public boolean isFind(List<Integer> list, int i, int j){if (list.size() == 1) {jgg[i][j] = list.get(0);isNotCalc = false;if (isOut) {System.out.println("添加第" + (i + 1) + "行,第" + (j + 1) + "列 为【" + jgg[i][j] + "】");}return true;}return false;}public boolean isOut() {return isOut;}public void setOut(boolean isOut) {this.isOut = isOut;}
}

一个简单的九宫格计算器相关推荐

  1. php实现一个简单的四则运算计算器

    php实现一个简单的四则运算计算器(还不支持括号的优先级).利用栈这种数据结构来计算表达式很赞. 这里可以使用栈的结构,由于php的数组"天然"就有栈的特性,这里直接就利用了数组. ...

  2. swift for循环_Swift | 实战一个简单的素数计算器demo

    Swift 实战一个简单的素数计算器demo 本期我们来介绍如何用storyboard来实现一个素数计算器demo,storyboard可以明确地知道界面上的组件与代码的关系,而且比起仅用代码写要方便 ...

  3. 作业1开发一个简单的python计算器

    开发一个简单的python计算器 实现加减乘除及拓号优先级解析 用户输入 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568 ...

  4. 设计一个简单的四则计算器

    c# using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; u ...

  5. 程序员成长之旅——Delphi实现一个简单的科学计算器

    程序员成长之旅--Delphi实现一个简单的科学计算器 目标效果 组件以及开发环境 最终呈现 源码GITHUB 目标效果 组件以及开发环境 delphi7版本及以上,这里我用delphi10.4进行的 ...

  6. Vue v-model双向数据绑定和一个简单的整数计算器

    一.v-model双向数据绑定 方法 v-bind - 单向数据绑定(从M到V) v-model - 双向数据绑定 例子 <input type="text" v-bind: ...

  7. 设计一个简单的网页计算器

    设计一个简单的网页计算器 一.代码 <!DOCTYPE html> <html> <head><meta charset="UTF-8"& ...

  8. python做的简单gui计算器_Python计算器–使用Tkinter创建一个简单的GUI计算器

    在Python计算器教程中,您将学习创建简单的GUI计算器.在这篇文章中,我将向您展示如何使用python中的tkinter模块开发一个简单的计算器.因此,让我们进一步创建一个简单的python计算器 ...

  9. 一个简单的税利计算器(网页版)

    嗯嗯,做一个简单的网页版的税率计算器,功能比较简单,但是相对比较实用.因为参考了一些其他作品,所以在计算汇率的时候习惯性的是以美元做单位.具体的功能有着较为详细的标注.仅供大家学习参考下. <! ...

最新文章

  1. 中国未来技术学院盘点
  2. C#中把货币、日期转换成中文大写
  3. 生产级部署 Python 脚本,崩溃可自启!
  4. 专插本跨考计算机科学与技术,2021年计算机科学与技术专业-计算机组成原理-考试大纲(专插本).docx...
  5. 关于jquerymobile的预加载
  6. 将大型项目从Ant迁移到Maven
  7. azure多功能成像好用吗_Azure持久功能简介:模式和最佳实践
  8. java你可能不知道的事(2)--堆和栈
  9. Passing the Message(HDU-3410)
  10. 音视频开发(3)---ffmpeg
  11. 霍夫直线检测python_python+opencv实现霍夫变换检测直线的方法
  12. 功放前级的左右_TDG Audio达芬奇:什么是前级,后极?
  13. Spark算子:RDD键值转换操作(2)–combineByKey、foldByKey
  14. 蓝懿IOS实战音乐播放器
  15. AndroidStudio高级计算器三角函数对数
  16. html详细笔记及练习的几个例子
  17. 【个人网站】零基础个人网站搭建完整教程二(网站服务器配置)
  18. 特斯拉Y系列降价后订单暴增,国信证券称后期有望降至26万
  19. 虚拟计算服务器吗,云计算服务器是虚拟的吗
  20. c语言 求两个数的平均值

热门文章

  1. hybrid在大前端的韩流中你自我增值必懂的一个点
  2. Python打印彩色字体
  3. 金士顿 KC3000 PCIe 4.0 NVMe 旗舰 SSD 上市
  4. C# 实现寻峰算法的简单优化(包含边峰,最小峰值,峰距)
  5. 明日方舟公式计算机,明日方舟公开招募计算器怎么用 公开招募计算工具分享...
  6. linux单机游戏软件下载,帝国时代单机手机版
  7. 企业宣传画册印刷产品的作用和功能
  8. 显卡3D管理程序设置与游戏画质的关系
  9. buuctf wustctf2020_getshell_2 ret2shellcode
  10. java+单例+恶汉_Java设计模式之单例模式(恶汉式和懒汉式)