JAVA大作业_2
江苏开放大学JAVA程序设计形考二作业

2023年春江苏开放大学JAV A程序设计形考二作业试题列表单选题题型:单选题客观题分值3分难度:简单得分:31已知有下面类的说明:public class X5_1_1 extends x{private float f =10.6f;int i=16;static int si=10;public static void main(String[] args) {X5_1_1 x=new X5_1_1();}}在main()方法中,下面哪条语句的用法是正确的?()Ax.fBthis.siCX5_1_1.iDX5_1_1.f正确答案:A题型:单选题客观题分值3分难度:简单得分:32下面关于接口的说法中不正确的是()。
A接口中所有的方法都是抽象的B接口中所有的方法都是public访问权限C子接口继承父接口所用的关键字是implements D接口是Java中的特殊类,包含常量和抽象方法正确答案:C老师点评:题型:单选题客观题分值3分难度:简单得分:3 3区分类中重载方法的依据是()A形参列表的类型和顺序B不同的形参名称C返回值的类型不同D访问权限不同正确答案:A题型:单选题客观题分值3分难度:简单得分:3 4Java语言类间的继承关系是()A单继承B多重继承C不能继承D不一定正确答案:A题型:单选题客观题分值3分难度:简单得分:3 5Java语言接口间的继承关系是()。
A单继承B多重继承C不能继承D不能继承正确答案:B老师点评:题型:单选题客观题分值3分难度:简单得分:3 6下列程序的运行结果是()。
public class X5_1_2 extends x{int ab(){static int aa=10;aa++;System.out.println(aa);}public static void main(String[] args) {X5_1_2 x=new X5_1_2();x.ab();}}A10B11C编译错误D运行成功,但不输出正确答案:C题型:单选题客观题分值3分难度:简单得分:3 7一个类实现接口的情况是()。
java程序设计大作业

Java程序设计大作业可能涉及多个方面,具体取决于你的课程要求和教师的要求。
以下是一个可能的Java程序设计大作业的示例:题目:设计并实现一个简单的计算器应用程序。
要求:1. 使用Java编写一个命令行应用程序,能够执行基本的数学运算(加、减、乘、除)。
2. 用户应该能够输入两个数字和一个运算符,程序将根据运算符执行相应的运算并输出结果。
3. 程序应该能够处理不同类型的数字(整数和浮点数)和运算符。
4. 程序应该能够处理输入错误,例如用户输入了无效的运算符或非数字字符。
示例代码:```javaimport java.util.Scanner;public class Calculator {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.print("请输入第一个数字:");double num1 = scanner.nextDouble();System.out.print("请输入运算符(+、-、*、/):"); String operator = scanner.next();System.out.print("请输入第二个数字:");double num2 = scanner.nextDouble();double result = 0;switch (operator) {case "+":result = num1 + num2;break;case "-":result = num1 - num2;break;case "*":result = num1 * num2;break;case "/":if (num2 == 0) {System.out.println("除数不能为0!");return;} else {result = num1 / num2;}break;default:System.out.println("无效的运算符!");return;}System.out.println(num1 + " " + operator + " " + num2 + " = " + result);}}```在这个示例代码中,我们使用了`Scanner`类从用户那里获取输入。
电大 Java语言和WWW技术 实验作业2

实验1要求
• 读程序,给以下程序添加输出语句,以 显示m的值 • 调试并记录结果 • 画出m变量创建过程中内存的变化
实 验 1 程 序
public class MyDate { private int day = 1; private int month = 1; private int year = 2000; public MyDate(int d, int m, int y) { year = y; month = m; day = d; } public void display() { System.out.println(year + " / " + month+ " / " +day); } public static void main(String[] args) { MyDate m = new MyDate(1, 8, 2003); } }
实验5
• 将程序1 Parent类和程序2 Child类存于同一 包(目录)中,并调试程序,记录结果。 • 将程序1 Parent类存于当前包的子包parent 中,程序2 Child类存于当前包中,并调试 程序,记录结果。 • 比较以lass Parent{ private int f1 = 1; int f2 = 2; protected int f3 = 3; public int f4 = 4; private void fm1() { System.out.println("in fm1() f1=" + f1);} void fm2() { System.out.println("in fm2() f2=" + f2);} protected void fm3() { System.out.println("in fm3() f3=" + f3);} public void fm4() { System.out.println("in fm4() f4=" + f4);} }
JAVA 大作业 2

JA V A 大作业----------------------------------------------------------------------------------------------------------------------班级:计算112学号:110811224姓名:王勤东摘要已知数据库student表stl,编写程序,链接数据库,做图形界面,在其中有多个选项“添加”、“修改”、“删除”、“查询”等,根据用户选择的功能再输入相应的数据并完成相关功能。
用web实现。
目录一.实验步骤 (3)二.主要原代码及界面 (3)1.主界面 (5)2.添加界面 (7)3.修改界面 (9)一实验步骤:在MySQL Command Line Client中建数据库,运行以下代码:Enter password: ********* //密码Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 1Server version: 5.6.12 MySQL Community Server (GPL)Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> create database students;Query OK, 1 row affected (0.14 sec)mysql> use students;Database changedmysql> CREATE TABLE st1-> (-> no CHAR(9) NOT NULL,-> name CHAR(8) NOT NULL,-> sex CHAR(2) NOT NULL,-> birthday DATE NOT NULL,-> major VARCHAR(20) NOT NULL-> );Query OK, 0 rows affected (1.13 sec)mysql> insert into st1 values ('110814102', 'Tom','m','91-01-02','computer');Query OK, 1 row affected (0.09 sec)mysql> select * from st1;+-----------+------+-----+------------+----------+| no | name | sex | birthday | major |+-----------+------+-----+------------+----------+| 110814102 | Tom | m | 1991-01-02 | computer |+-----------+------+-----+------------+----------+1 row in set (0.03 sec)二主要原代码及界面:import java.sql.*;public class operatedb1{String driverName = "com.mysql.jdbc.Driver";String dbURL = "jdbc:mysql://localhost:3306/student";static int flag=0;static Connection dbConn;public operatedb1(String userName,String userPwd){try{dbConn = DriverManager.getConnection(dbURL, userName, userPwd);flag=1;}catch (Exception e) {System.out.println("connection error!");e.printStackTrace();} }}添加功能实现:import java.sql.*;import javax.servlet.*;import javax.servlet.http.*;import java.io.*;public class addwebs1 extends HttpServlet{public void service(HttpServletRequest rq,HttpServletResponse rp) throws ServletException,IOException{String userName = "root"; //默认用户名String userPwd = "123456789"; //密码Connection dbConn;rp.setContentType("text/html;charset=gbk");PrintWriter out=rp.getWriter();String no=new String(rq.getParameter("no").getBytes("iso-8859-1"));String nm=new String(rq.getParameter("nm").getBytes("iso-8859-1"));String sx=new String(rq.getParameter("sx").getBytes("iso-8859-1"));String ag=new String(rq.getParameter("ag").getBytes("iso-8859-1"));String dp=new String(rq.getParameter("dp").getBytes("iso-8859-1"));try{if(operatedb1.flag==0){ new operatedb1(userName,userPwd);//生成operatedb1的对象,连接数据库out.println("flag==0");}if(operatedb1.flag==1){out.println("Connection Successful!");Statement stmt=operatedb1.dbConn.createStatement();String s1="insert into st1 values('";s1=s1+no+"','"+nm+"','"+sx+"','"+ag+"','"+dp+"')";out.println(s1);stmt.executeUpdate(s1);}}catch(Exception e){}out.println("Thank you ");}}Html 代码:<meta http-equiv="Content-Type" content="text/html; charset=gbk" /> <form action=addweb method=get>学号:<input type=text name=no> <br>姓名:<input type=text name=nm> <br>性别:<input type=text name=sx> <br>生日:<input type=date name=ag> <br>专业:<input type=text name=dp> <br><input type=submit value="提交"><input type="button" name="返回" value="返回"onClick="location.href='head.html'"/></form>删除功能实现:import java.sql.*;import javax.servlet.*;import javax.servlet.http.*;import java.io.*;public class deletwebs extends HttpServlet{public void service(HttpServletRequest rq,HttpServletResponse rp) throws ServletException,IOException{String userName = "root"; //默认用户名String userPwd = "123456789"; //密码rp.setContentType("text/html;charset=gbk");PrintWriter out=rp.getWriter();String no=new String(rq.getParameter("yy").getBytes("iso-8859-1"));try{if(operatedb1.flag==0){new operatedb1(userName,userPwd);//生成operatedb1的对象,连接数out.println("flag==0"+ "<br>");}if(operatedb1.flag==1 ){out.println("Connection Successful!"+ "<br>");Statementstmt=operatedb1.dbConn.createStatement();String s1="delete from st1 where no='";String s=s1+no+"'";out.println(s+ "<br>");int f=stmt.executeUpdate(s);if(f==0)out.println("删除失败"+ "<br>");elseout.println("删除成功"+ "<br>");} }catch(Exception e){out.println(e);}out.println("Thank you ");} }Html 代码:<meta http-equiv="Content-Type" content="text/html; charset=gbk" /> <form action=deletweb method=get>输入学号:<input type=text name=yy> <br><input type=submit value="删除"><input type="button" name="返回" value="返回"onClick="location.href='head.html'"/></form>修改功能实现:import java.sql.*;import javax.servlet.*;import javax.servlet.http.*;import java.io.*;public class updatewebs extends HttpServlet{public void service(HttpServletRequest rq,HttpServletResponse rp) throws ServletException,IOException{String userName = "root"; //默认用户名String userPwd = "123456789"; //密码Connection dbConn;rp.setContentType("text/html;charset=gbk");PrintWriter out=rp.getWriter();String no=new String(rq.getParameter("no").getBytes("iso-8859-1"),"gbk");String nm=new String(rq.getParameter("nm").getBytes("iso-8859-1"),"gbk");String sx=new String(rq.getParameter("sx").getBytes("iso-8859-1"),"gbk");String ag=new String(rq.getParameter("ag").getBytes("iso-8859-1"),"gbk");String dp=new String(rq.getParameter("dp").getBytes("iso-8859-1"),"gbk");try{if(operatedb1.flag==0){ new operatedb1(userName,userPwd);//生成operatedb1的对象,连接数据库out.println("flag==0");}if(operatedb1.flag==1){out.println("Connection Successful!"); //如果连接成功控制台输出Connection Successful!Statement stmt=operatedb1.dbConn.createStatement();String s1="update st1 set no='";s1=s1+no+"',name='"+nm+"',sex='"+sx+"',birthday='"+ag+"',major='"+dp +"'";out.println(s1);stmt.executeUpdate(s1); }}catch(Exception e){}out.println("Thank you ");}}Html 代码:<meta http-equiv="Content-Type" content="text/html; charset=gbk"/><form action=updateweb method=get>学号:<input type=text name=no> <br>姓名:<input type=text name=nm> <br>性别:<input type=text name=sx> <br>生日:<input type=date name=ag> <br>专业:<input type=text name=dp> <br><input type=submit value="修改"><input type="button" name="返回" value="返回"onClick="location.href='head.html'"/></form>查询功能实现:import java.sql.*;import javax.servlet.*;import javax.servlet.http.*;import java.io.*;public class showwebs extends HttpServlet{public void service(HttpServletRequest rq,HttpServletResponse rp) throws ServletException,IOException{String userName = "root"; //默认用户名String userPwd = "123456789"; //密码rp.setContentType("text/html;charset=gbk");PrintWriter out=rp.getWriter();String no=new String(rq.getParameter("xx").getBytes("iso-8859-1"));try{if(operatedb1.flag==0){new operatedb1(userName,userPwd);//生成operatedb1的对象,连接数out.println("flag==0"); }if(operatedb1.flag==1){out.println("Connection Successful!"); //如果连接成功控制台输出Connection Successful!Statementstmt=operatedb1.dbConn.createStatement();//String s1="select * from st1 where no='";String s=s1+no+"'";out.println(s + "<br>");ResultSet rset=stmt.executeQuery(s);while(rset.next()){out.println(rset.getString(1)+""+rset.getString(2)+" "+rset.getString(3)+" "+rset.getString(4)+""+rset.getString(5)+"<br>");} } }catch(Exception e){out.println(e);}out.println("Thank you "); } }Html 代码:<meta http-equiv="Content-Type" content="text/html; charset=gbk" /> <form action=showweb method=get>输入学号:<input type=text name=xx> <br><input type=submit value="查询"><input type="button" name="返回" value="返回"onClick="location.href='head.html'"/></form>WEB.xml 代码如下:<web-app xmlns="/xml/ns/javaee"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/xml/ns/javaee /xml/ns/javaee/web-app_2_5.xsd"version="2.5"><display-name>Welcome to Tomcat</display-name><description>Welcome to Tomcat</description><servlet><servlet-name>adds</servlet-name><servlet-class>addwebs1</servlet-class></servlet><servlet-mapping><servlet-name>adds</servlet-name><url-pattern>/addweb</url-pattern></servlet-mapping><servlet><servlet-name>shows</servlet-name><servlet-class>showwebs</servlet-class></servlet><servlet-mapping><servlet-name>shows</servlet-name><url-pattern>/showweb</url-pattern></servlet-mapping><servlet><servlet-name>deles</servlet-name><servlet-class>deletwebs</servlet-class></servlet><servlet-mapping><servlet-name>deles</servlet-name><url-pattern>/deletweb</url-pattern></servlet-mapping><servlet><servlet-name>update</servlet-name><servlet-class>updatewebs</servlet-class> </servlet><servlet-mapping><servlet-name>update</servlet-name><url-pattern>/updateweb</url-pattern></servlet-mapping></web-app>。
java作业2

}
}
class NonSpecialist extends Doctor{
public NonSpecialist(String name, int idNumber, String address) {
super(name, idNumber, address);
}
}
class Specialist extends Doctor{
{
c= a + b;
}
}
class TextConcatenation extvoid add()
{
s3= s1 + s2;
}
}
public class AdditionTest {
public static void main(String[] args)
要求:两道题的文件(包含源程序和.class文件)放在一个文件夹里,文件夹用“学号最后两位+姓名”命名,如:“01张三”。
1、医生有姓名(name)、编号(idNumber)和地址(address)等基本信息,医生又分为专业医生和非专业医生。非专业医生所具有的信息与上述的一样,但专业医生除了具有上述的基本信息外,还有特有的信息:专业(speciality)。试根据他们之间的关系,创建一个Doctor类,以包含有关医生的基本信息,再利用继承创建一个非专业医生类NonSpecialist和一个专业医生类Specialist,并利用这些类的对象显示他们各自的信息。
{
NumberAddition e1 = new NumberAddition();
TextConcatenation e2 = new TextConcatenation();
java课堂作业02

1.用abstract修饰的类必须被继承。
2.一个Java类可以有多个父类,这称作多继承。
3.一个Java源程序中允许有多个公共类。
4.对static方法的调用不需要类实例5.用static修饰的方法称为静态方法,它不属于类的一个具体对象。
6.可以用new来创建一个类的实例,即对象。
7.continue语句用在循环结构中表示继续执行下一次循环。
8.保留字this代表当前对象。
9.声明为final的方法不能在子类中重载。
10.类的public类型的成员变量不可以被继承。
11.Java的double类型是16位的。
12.任何的Applet都完全不能访问本地资源13.Application是从其中的main()方法开始运行的。
14.abstract是抽象修饰符,可以用来修饰类及其属性和方法。
15.用Javac编译Java源文件后得到代码叫字节码。
16.static变量不能是private变量。
17.接口中变量的值其实是常量,是不能改变的。
18.抽象类不能实例化19.一个异常处理中finally语句块只能有一个或者可以没有。
20.Java源程序的文件名必须和公共类的类名相同。
21.Java支持多继承。
22.Java支持多线程机制。
23.Java源代码中定义几个类,编译结果就生成几个以.class为后缀字节码文件。
24.Java中的的字符使用的是16位的Unicode编码。
25.一个类的定义包括定义类头和定义类体两个部分。
26.数组一定占用连续的内存空间。
27.在面向对象方法中,类的实例称为对象。
28.子类的对象能直接向其父类对象赋值。
29.抽象方法必须在抽象类中,所以抽象类中的方法都必须是抽象方法。
30.构造方法的方法名可由编程人员任意命名。
31.一个方法最多能有一个return语句。
32.抽象方法只能存在于抽象类中。
33.构造方法没有任何返回类型,哪怕是void也不行34.重载的方法可以通过它们的返回值类型的不同来区分。
java期末考试题及答案大二

java期末考试题及答案大二一、选择题(每题2分,共20分)1. Java中,下列哪个关键字用于声明一个类?A. classB. interfaceC. structD. enum答案:A2. 下列哪个选项是Java中的合法标识符?A. 2variableB. variable2C. -variableD. variable$答案:B3. 在Java中,下列哪个数据类型是引用数据类型?A. intB. floatC. StringD. boolean答案:C4. Java中的main方法必须定义为:A. public static void main(String[] args)B. private static void main(String[] args)C. public static int main(String[] args)D. public static void main()答案:A5. 下列哪个选项是Java中的垃圾回收机制?A. 程序员手动释放内存B. 操作系统自动回收C. 垃圾回收器自动回收D. 编译器自动回收答案:C6. Java中,下列哪个关键字用于实现多态?A. abstractB. finalC. staticD. super答案:A7. 在Java中,下列哪个选项不是线程安全的?A. StringB. IntegerC. VectorD. ArrayList答案:D8. Java中,下列哪个关键字用于声明一个接口?A. classB. interfaceC. abstractD. final答案:B9. 在Java中,下列哪个选项是正确的继承关系?A. 类可以继承多个类B. 类可以实现多个接口C. 接口可以继承多个接口D. 类可以实现多个类答案:C10. Java中,下列哪个关键字用于抛出异常?A. throwB. throwsC. catchD. finally答案:B二、填空题(每题2分,共20分)1. Java中,布尔型数据的两个值是________和________。
大二java期末试题及答案

大二java期末试题及答案(本文按照试题和答案的格式来进行书写)大二Java期末试题及答案试题:题目一:Java的特点以及应用领域。
答案:Java是一种跨平台、面向对象的编程语言,具有以下几个特点:1. 简单易学:Java的语法相对简单,与C++相比,Java去除了一些复杂的特性,使得初学者更容易上手。
2. 跨平台性:Java的编译器将Java源代码编译为字节码,而不是直接编译为机器码,这样可以在不同的操作系统上运行Java程序。
只需要在特定平台上安装Java虚拟机(Java Virtual Machine, JVM),即可实现跨平台运行。
3. 面向对象:Java是一种完全面向对象的编程语言,所有的数据都是对象,所有的操作都是方法调用。
4. 垃圾回收:Java具有自动内存管理的特性,通过垃圾回收器来回收不再使用的对象所占用的内存空间,减轻了开发者的内存管理负担。
5. 安全性:Java拥有安全性机制,如对内存的访问进行控制、强制进行类型检查等,避免了一些常见的安全漏洞。
Java的应用领域包括但不限于:1. 网络编程:Java提供了丰富的网络编程类库,支持TCP/IP和UDP等协议,可以用于开发网络服务器和客户端应用。
2. 移动应用开发:通过Java开发Android应用,可以利用Java的跨平台特性,在不同的Android设备上运行。
3. 企业级应用开发:Java提供了一系列的企业级编程框架(如Spring、Hibernate等),可以用于开发大规模的企业级应用。
4. 大数据处理:Java提供了Hadoop、Spark等大数据处理框架,支持海量数据的分布式处理和分析。
题目二:什么是多态性?请用Java代码示例说明。
答案:多态性是面向对象编程中的重要概念,指的是同一类型的对象,在不同的情况下可以表现出不同的行为。
在Java中,多态性通过继承和接口实现。
Java代码示例:```java// 父类class Animal {void makeSound() {System.out.println("Animal makes sound.");}}// 子类1class Dog extends Animal {@Overridevoid makeSound() {System.out.println("Dog barks."); }}// 子类2class Cat extends Animal {@Overridevoid makeSound() {System.out.println("Cat meows."); }}public class PolymorphismExample {public static void main(String[] args) { Animal animal1 = new Dog();Animal animal2 = new Cat();animal1.makeSound(); // 输出:Dog barks.animal2.makeSound(); // 输出:Cat meows.}}```在上述示例中,Animal作为父类,Dog和Cat作为子类。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
}
DFS(); } 算法核心:第一次是从所有数字中随机,第二次时从前八个数字中随机,依次类 推, 这样既保证随机, 也不会再重复取已经不符合要求的数字, 提高程序的效率。 程序的相关分析 import java.awt.*; //这个一般在程序开始时用,即置入包。 import javax.awt.event.*;//置入处理由 awt 组件产生的事件,有别于 String 事件 import javax.swing.*;//置入最常用包,最常用的 pachage,包含了各种 swing 组件 的类 public class: 在 java 中用 public class 可以定义一个 java 程序的入口类, 在 asp 用 class ClassName 可以定义一个类 private:在 Java 中是一个关键字, private 是类中的一个属性 用它 表示私有成员, 定义的 feild 和 method 只能在类中被调用.如果定义了 private,就不能被外部类所 访问了 this:java 中 this 有两种用法 1、代表当前类;2、在构造函数中的使用 如: this.setSize(300,300);// 设置窗体的长宽各为:440, 140//它们的计量单位是像素 this.setVisible(true);//显示窗口 this.setResizable(false);//窗口大小不能改变 this.setDefaultCloseOperation(EXIT_ON_CLOSE);//单击窗口按钮时,结束程序运 行; new JPanel(new FlowLayout());//流式布局;GridLayout()//网格布局 texts[i].setEditable(false);//只能显示,不允许编辑; static :声明静态成员变量
static void set_data_zero(){ for(int i=0;i<=9;i++){ for(int j=0;j<=9;j++){ data[i][j]=0; } } }
//数独的初始化
static void setnum(){ //数独数字的设置 setzero(); set_data_zero(); for(int i=1;i<=9;i++){ //尝试填充的次数 int n =(int)(Math.random()*100)+1; //添加任意整数 int j=i*3-((i+2)/3*8-6); data[i][j]=n%9+1; //产生数字 int k=data[i][j]; row[i][k]=1; col[j][k]=1; sql[(i+2)/3][(j+2)/3][k]=1;
《JAVA 语言程序设计》
课程设计报告
Java 数独游戏设计
专业班级: 学生姓名: 学生学号: 小组成员: 指导教师:
计算机科学与技术(嵌入式 13-1) 翟世昌 13031010158 方建峰 殷智玺 冯泽刚 翟世昌 宋强
目录 1.数独游戏与系统概述............................................................................. 3 1.1 设计背景........................................................................................ 3 1.2 数独游戏简介................................................................................ 3 方格................................................................................................. 3 行..................................................................................................... 4 列..................................................................................................... 4 宫..................................................................................................... 5 2.系统可行性分析与相关技术分析.........................................................5 2.1 面向对象程序设计方法................................................................ 5 3.系统设计与关键技术............................................................................. 6 3.1 系统的功能分析............................................................................ 6 3.2 系统的实现.................................................................................... 6 4.系统测试与操作实施方法................................................................... 10 4.1 系统开发环境.............................................................................. 10 4.2 系统实现...................................................................................... 10 5.系统设计总结....................................................................................... 13 6.参考文献............................................................................................... 14 7.源代码................................................................................................... 14
&&
col[j][k]==0
&&
sql[(i+2)/3][(j+2)/3][k]==0 ){
}
} return 1;
}
}
}
} if(k==9) return 0;
data[i][j]=k; row[i][k]=1; col[j][k]=1; sql[(i+2)/3][(j+2)/3][k]=1; if( DFS()==1 ) return 1; else{ data[i][j]=0; row[i][k]=0; col[j][k]=0; sql[(i+2)/3][(j+2)/3][k]=0; }
方格
水平方向有九横行,垂直方向有九纵列的矩形,画分八十一个小正方形,称
为九宫格(Grid) ,如图一所示,是数独(Sudoku)的作用范围。
数独元素 - 九宫格
行
水平方向的每一横行有九格,每一横行称为行(Row) ,如图二所示。
数独元素 - 单元
列
垂直方向的每一纵列有九格,每一纵列称为列(Column) ,如图三所示。
1.数独游戏与系统概述
1.1 设计背景
单机游戏是一种比较流行的游戏,其画面都比较简单,很少有复杂的游戏特 效, 但是通常用到人工智能的算法来控制游戏的难度。而算法的优化是开发该类 游戏的难点。这类游戏游戏主要包括棋牌类游戏和智力测试类游戏,例如麻将, 扫雷、五子棋、扑克牌等。 数独就是单机益智游戏的一种,玩法简单单数字的排列方式千变万化,很多 人认为数独是练头脑的绝佳方式。本章通过讲解数独游戏在 java 平台的设计与 实现,使读者了解此类游戏的开发过程,掌握实用的开发技巧,学会此类游戏的 开发。
1.2 数独游戏简介
数独(すうどく,Sūdoku)是一种运用纸、笔进行演算的逻辑游戏。玩家需 要根据 9×9 盘面上的已知数字,推理出所有剩余空格的数字,并满足每一行、每 一列、每一个粗线宫内的数字均含 1-9,不重复。 数独盘面是个九宫, 每一宫又分为九个小格。在这八十一格中给出一定的已 知数字和解题条件,利用逻辑和推理,在其他的空格上填入 1-9 的数字。使 1-9 每个数字在每一行、每一列和每一宫中都只出现一次,所以又称“九宫格”。 起源 既然“数独”有一个字是“数”,人们也往往会联想到数学,那就不妨从大家都 知道的数学家欧拉说起,但凡想了解数独历史的玩家在网络、书籍中搜索时,都 会提到的就是欧拉的“拉丁方块(Latin square)”, 拉丁方块的规则:每一行(Row) 、每一列(Column)均含 1-N(N 即盘面 的规格) ,不重复。这与前面提到的标准数独非常相似,但少了一个宫的规则。 组成元素:
3.系统设计与关键技术
3.1 系统的功能分析
框架的合理布局。对于一个应用程序,界面的简单明了是很重要的,既 要简单明了还要实用,不能华而不实。 异常处理的实现。对于一个独立运行的程序,能够独立的处理运行中的 问题,并提示错误也是很重要的。 算法的实现,要准确的得出九宫格数字的正确排布,要保证随机,也要 保证数字的不重复,使得已经尝试过的数字不再取到,这是比较困难的。 创建对话框,并设置监听器处理相应的事件,例如语句: item_exit.addCaretListener(this);用于监听单击事件。 算法的实现,宫格的布局。 异常处理的实现,使用 try-catch 去捕捉异常事件,当出现异常时用跳出 错误提示对话框,提示错误信息,例如: {JOptionPane.showMessageDialog(null,” 数据中包括非数字, 请重新输入! ” );}