gajava代码 hellojava代码

java实现一行代码运行3s无响应,让它报错1. java.lang.nullpointerexception
这个异常大家肯定都经常遇到,异常的解释是"程序 遇上了空指针",简单地说就是调用了未经初始化的对象或者是不存在的对象,这个错误经常出现在创建图片,调用数组这些操作中,比如图片 未经初始化,或者图片创建时的路径错误等等 。对数组操作中出现空指针,很多情况下是一些刚开始学习编程的朋友常犯的错误,即把数组的初始化和数组元素的初 始化混淆起来了 。数组的初始化是对数组分配需要的空间,而初始化后的数组 , 其中的元素并没有实例化,依然是空的,所以还需要对每个元素都进行初始化(如果 要调用的话)
2. java.lang.classnotfoundexception
这个异常是很多原本在jb等开发环境中开 发的程序员 , 把jb下的程序包放在wtk下编译经常出现的问题,异常的解释是"指定的类不存在",这里主要考虑一下 类的名称和路径是否正确即可,如果是在jb下做的程序包,一般都是默认加上package的,所以转到wtk下后要注意把package的路径加上 。
3. java.lang.arithmeticexception
这个异常的解释是"数学运算异常",比如程序中出现了除以零这样的运算就会出这样的异常,对这种异常,大家就要好好检查一下自己程序中涉及到数学运算的地方,公式是不是有不妥了 。
4. java.lang.arrayindexoutofboundsexception
这个异常相信很多朋友也经常遇到过 , 异常的解释是"数组下标越界" , 现在程序中大多都有对数组的操作,因此在调用 数组的时候一定要认真检查,看自己调用的下标是不是超出了数组的范围,一般来说 , 显示(即直接用常数当下标)调用不太容易出这样的错,但隐式(即用变量表 示下标)调用就经常出错了,还有一种情况,是程序中定义的数组的长度是通过某些特定方法决定的,不是事先声明的,这个时候,最好先查看一下数组的length , 以免出现这个异常 。
5. java.lang.illegalargumentexception
这个异常的解释 是"方法的参数错误",很多j2me的类库中的方法在一些情况下都会引发这样的错误,比如音量调节方法中的音量参数 如果写成负数就会出现这个异常,再比如g.setcolor(int red,int green,int blue)这个方法中的三个值,如果有超过255的也会出现这个异常,因此一旦发现这个异常,我们要做的,就是赶紧去检查一下方法调用中的参数传递是不是 出现了错误 。
6. java.lang.illegalaccessexception
这个异常的解释是"没有访问权限",当应用程序要调用一个类,但当前的方法即没有对该类的访问权限便会出现这个异常 。对程序中用了package的情况下要注意这个异常 。
其gajava代码他还有很多异常 , 我就不一一列举了,我要说明的是,一个合格的程序员,需要对程序中常见的问题有相当的了解和相应的解决办法,否则仅仅停留在写程序而不会改程序的话,会极大影响到自己的开发的 。关于异常的全部说明,在api里都可以查阅 。
算术异常类:ArithmeticExecption
空指针异常类:NullPointerException
类型强制转换异常:ClassCastException
数组负下标异常:NegativeArrayException
数组下标越界异常:ArrayIndexOutOfBoundsException
违背安全原则异常:SecturityException
文件已结束异常:EOFException
文件未找到异常:FileNotFoundException
字符串转换为数字异常:NumberFormatException
操作数据库异常:SQLException
输入输出异常:IOException
方法未找到异常:NoSuchMethodException
java.lang.AbstractMethodError
抽象方法错误 。当应用试图调用抽象方法时抛出 。
java.lang.AssertionError
断言错 。用来指示一个断言失败的情况 。
java.lang.ClassCircularityError
类循环依赖错误 。在初始化一个类时,若检测到类之间循环依赖则抛出该异常 。
java.lang.ClassFormatError
类格式错误 。当Java虚拟机试图从一个文件中读取Java类,而检测到该文件的内容不符合类的有效格式时抛出 。
java.lang.Error
错误 。是所有错误的基类,用于标识严重的程序运行问题 。这些问题通常描述一些不应被应用程序捕获的反常情况 。
java.lang.ExceptionInInitializerError
初始化程序错误 。当执行一个类的静态初始化程序的过程中,发生了异常时抛出 。静态初始化程序是指直接包含于类中的static语句段 。
java.lang.IllegalAccessError
违法访问错误 。当一个应用试图访问、修改某个类的域(Field)或者调用其方法,但是又违反域或方法的可见性声明,则抛出该异常 。
java.lang.IncompatibleClassChangeError
不兼容的类变化错误 。当正在执行的方法所依赖的类定义发生了不兼容的改变时,抛出该异常 。一般在修改了应用中的某些类的声明定义而没有对整个应用重新编译而直接运行的情况下 , 容易引发该错误 。
java.lang.InstantiationError
实例化错误 。当一个应用试图通过Java的new操作符构造一个抽象类或者接口时抛出该异常.
java.lang.InternalError
内部错误 。用于指示Java虚拟机发生了内部错误 。
java.lang.LinkageError
链接错误 。该错误及其所有子类指示某个类依赖于另外一些类,在该类编译之后,被依赖的类改变了其类定义而没有重新编译所有的类,进而引发错误的情况 。
java.lang.NoClassDefFoundError
未找到类定义错误 。当Java虚拟机或者类装载器试图实例化某个类,而找不到该类的定义时抛出该错误 。
java.lang.NoSuchFieldError
域不存在错误 。当应用试图访问或者修改某类的某个域 , 而该类的定义中没有该域的定义时抛出该错误 。
java.lang.NoSuchMethodError
方法不存在错误 。当应用试图调用某类的某个方法 , 而该类的定义中没有该方法的定义时抛出该错误 。
java.lang.OutOfMemoryError
内存不足错误 。当可用内存不足以让Java虚拟机分配给一个对象时抛出该错误 。
java.lang.StackOverflowError
堆栈溢出错误 。当一个应用递归调用的层次太深而导致堆栈溢出时抛出该错误 。
java.lang.ThreadDeath
线程结束 。当调用Thread类的stop方法时抛出该错误,用于指示线程结束 。
java.lang.UnknownError
未知错误 。用于指示Java虚拟机发生了未知严重错误的情况 。
java.lang.UnsatisfiedLinkError
未满足的链接错误 。当Java虚拟机未找到某个类的声明为native方法的本机语言定义时抛出 。
java.lang.UnsupportedClassVersionError
不支持的类版本错误 。当Java虚拟机试图从读取某个类文件,但是发现该文件的主、次版本号不被当前Java虚拟机支持的时候,抛出该错误 。
java.lang.VerifyError
验证错误 。当验证器检测到某个类文件中存在内部不兼容或者安全问题时抛出该错误 。
java.lang.VirtualMachineError
虚拟机错误 。用于指示虚拟机被破坏或者继续执行操作所需的资源不足的情况 。
java.lang.ArithmeticException
算术条件异常 。譬如:整数除零等 。
java.lang.ArrayIndexOutOfBoundsException
数组索引越界异常 。当对数组的索引值为负数或大于等于数组大小时抛出 。
java.lang.ArrayStoreException
数组存储异常 。当向数组中存放非数组声明类型对象时抛出 。
java.lang.ClassCastException
类造型异常 。假设有类A和B(A不是B的父类或子类),O是A的实例,那么当强制将O构造为类B的实例时抛出该异常 。该异常经常被称为强制类型转换异常 。
java.lang.ClassNotFoundException
找不到类异常 。当应用试图根据字符串形式的类名构造类 , 而在遍历CLASSPAH之后找不到对应名称的class文件时,抛出该异常 。
java.lang.CloneNotSupportedException
不支持克隆异常 。当没有实现Cloneable接口或者不支持克隆方法时,调用其clone()方法则抛出该异常 。
java.lang.EnumConstantNotPresentException
枚举常量不存在异常 。当应用试图通过名称和枚举类型访问一个枚举对象,但该枚举对象并不包含常量时 , 抛出该异常 。
java.lang.Exception
根异常 。用以描述应用程序希望捕获的情况 。
java.lang.IllegalAccessException
违法的访问异常 。当应用试图通过反射方式创建某个类的实例、访问该类属性、调用该类方法,而当时又无法访问类的、属性的、方法的或构造方法的定义时抛出该异常 。
java.lang.IllegalMonitorStateException
违法的监控状态异常 。当某个线程试图等待一个自己并不拥有的对象(O)的监控器或者通知其他线程等待该对象(O)的监控器时 , 抛出该异常 。
java.lang.IllegalStateException
违法的状态异常 。当在Java环境和应用尚未处于某个方法的合法调用状态,而调用了该方法时,抛出该异常 。
java.lang.IllegalThreadStateException
违法的线程状态异常 。当县城尚未处于某个方法的合法调用状态,而调用了该方法时 , 抛出异常 。
java.lang.IndexOutOfBoundsException
索引越界异常 。当访问某个序列的索引值小于0或大于等于序列大小时 , 抛出该异常 。
java.lang.InstantiationException
实例化异常 。当试图通过newInstance()方法创建某个类的实例,而该类是一个抽象类或接口时,抛出该异常 。
java.lang.InterruptedException
被中止异常 。当某个线程处于长时间的等待、休眠或其他暂停状态,而此时其他的线程通过Thread的interrupt方法终止该线程时抛出该异常 。
java.lang.NegativeArraySizeException
数组大小为负值异常 。当使用负数大小值创建数组时抛出该异常 。
java.lang.NoSuchFieldException
属性不存在异常 。当访问某个类的不存在的属性时抛出该异常 。
java.lang.NoSuchMethodException
方法不存在异常 。当访问某个类的不存在的方法时抛出该异常 。
java.lang.NullPointerException
空指针异常 。当应用试图在要求使用对象的地方使用了null时,抛出该异常 。譬如:调用null对象的实例方法、访问null对象的属性、计算null对象的长度、使用throw语句抛出null等等 。
java.lang.NumberFormatException
数字格式异常 。当试图将一个String转换为指定的数字类型,而该字符串确不满足数字类型要求的格式时,抛出该异常 。
java.lang.RuntimeException
运行时异常 。是所有Java虚拟机正常操作期间可以被抛出的异常的父类 。
java.lang.SecurityException
安全异常 。由安全管理器抛出,用于指示违反安全情况的异常 。
java.lang.StringIndexOutOfBoundsException
字符串索引越界异常 。当使用索引值访问某个字符串中的字符,而该索引值小于0或大于等于序列大小时,抛出该异常 。
java.lang.TypeNotPresentException
类型不存在异常 。当应用试图以某个类型名称的字符串表达方式访问该类型 , 但是根据给定的名称又找不到该类型是抛出该异常 。该异常与ClassNotFoundException的区别在于该异常是unchecked(不被检查)异常,而ClassNotFoundException 是checked(被检查)异常 。
java.lang.UnsupportedOperationException
不支持的方法异常 。指明请求的方法不被支持情况的异常 。
异常
javax.servlet.jsp.JspException: Cannot retrieve mapping for action /Login (/Login是gajava代码你的action名字)
可能原因
action没有再strutsconfig.xml 中定义,或没有找到匹配的action , 例如在JSP文件中使用
异常
org.apache.jasper.JasperException: Cannot retrieve definition for form bean null
可能原因
这个异常是因为Struts根据strutsconfig.xml中的mapping没有找到action期望的form bean 。大部分的情况可能是因为在formbean中设置的name属性和action中设置的name属性不匹配所致 。换句话说 , action和form都应该各自有一个name属性,并且要精确匹配 , 包括大小写 。这个错误当没有name属性和action关联时也会发生,如果没有在action 中指定name属性,那么就没有name属性和action相关联 。当然当action制作某些控制时 , 譬如根据参数值跳转到相应的jsp页面,而不是处 理表单数据 , 这是就不用name属性,这也是action的使用方法之一 。
异常
No action instance for path /xxxx could be created
可能原因
特别提示:因为有很多中情况会导致这个错误的发生 , 所以推荐大家调高gajava代码你的web服务器的日志/调试级别,这样可以从更多的信息中看到潜在的、在试图创建action类时发生的错误 , 这个action类你已经在strutsconfig.xml中设置了关联(即添加了标签) 。
在strutsconfig.xml中通过action标签的class属性指定的action类不能被找到有很多种原因,例如:定位编译后 的.class文件失败 。Failure to place compiled .class file for the action in the classpath (在web开发中 , class的的位置在r WEBINF/classes , 所以你的action class必须要在这个目录下 。例如你的action类位于WEBINF/classes/action/Login.class,那么在strutsconfig.xml中设置action的属性type时就是action.Login).
拼写错误,这个也时有发生,并且不易找到,特别注意第一个字母的大小写和包的名称 。
异常
javax.servlet.jsp.JspException: No getter method for property username of bean org.apache.struts.taglib.html.BEAN
可能原因
没有位form bean中的某个变量定义getter 方法
这个错误主要发生在表单提交的FormBean中,用struts标记时,在FormBean中必须有一个getUsername()方法 。注意字母“U” 。
异常
java.lang.NoClassDefFoundError: org/apache/struts/action/ActionForm
可能原因
这个错误主要发生在在classpath中找不到相应的Java .class文件 。如果这个错误发生在web应用程序的运行时,主要是因为指定的class文件不在web server的classpath中(/WEBINF/classes 和/WEBINF/lib) 。在上面的错误中 , 原因是找不到ActionForm类 。
异常
javax.servlet.jsp.JspException: Exception creating bean of class org.apache.struts.action.ActionForm: {1}
可能原因
Instantiating Strutsprovided ActionForm class directly instead of instantiating a class derived off ActionForm. This mightoccur implicitly if you specify that a formbean is this Struts ActionForm class rather than specifying a child of this classfor the formbean.
Not associating an ActionFormdescended class with an action can also lead to this error.
异常
javax.servlet.jsp.JspException: Cannot find ActionMappings or ActionFormBeans collection
可能原因
不是标识Struts actionServlet的标记就是映射.do扩展名的标记或者两者都没有在web.xml中声明 。
在strutsconfig.xml中的打字或者拼写错误也可导致这个异常的发生 。例如缺少一个标记的关闭符号/ 。最好使用struts console工具检查一下 。
另外,loadonstartup必须在web.xml中声明,这要么是一个空标记,要么指定一个数值,这个数值用来表servlet运行的优先级,数值越大优先级越低 。
还有一个和使用loadonstartup有关的是使用Struts预编译JSP文件时也可能导致这个异常 。
异常
java.lang.NullPointerException at org.apache.struts.util.RequestUtils.forwardURL(RequestUtils.java:1223)
可能原因
在strutsconfig.xml中的forward元素缺少path属性 。例如应该是如下形式:
异常
javax.servlet.jsp.JspException: Cannot find bean org.apache.struts.taglib.html.BEAN in any scope
Probable Causes
试图在Struts的form标记外使用form的子元素 。这常常发生在你在后面使用Struts的html标 记 。另外要注意可能你不经意使用的无主体的标记 , 如,这样web 服务器解析时就当作一个无主体的标记 , 随后使用的所有标记都被认为是在这个标记之外的,如又使用了还有就是在使用taglib引入HTML标记库时,你使用的prefix的值不是html 。
异常
javax.servlet.jsp.JspException: Missing message for key xx.xx.xx
Probable Causes
这个key的值对没有在资源文件ApplicationResources.properties中定义 。如果你使用eclipse时经常碰到这样的情况,当项目重新编译时,eclipse会自动将classes目录下的资源文件删除 。
资源文件ApplicationResources.properties 不在classpath中应将资源文件放到WEBINF/classes 目录下,当然要在strutsconfig.xml中定义)
异常
Cannot find message resources under key org.apache.struts.action.MESSAGE
可能原因
很显然,这个错误是发生在使用资源文件时,而Struts没有找到资源文件 。
Implicitly trying to use message resources that are not available (such as using empty html:options tag instead of specifyingthe options in its body this assumes options are specified in ApplicationResources.properties file)
XML parser issues too many, too few, incorrect/incompatible versions
异常
Strange and seemingly random characters in HTML and on screen, but not in original JSP or servlet.
可能原因
混和使用Struts的html:form标记和标准的HTML标记不正确 。
使用的编码样式在本页中不支持 。
异常
"Document contained no data" in Netscape
No data rendered (completely empty) page in Microsoft Internet Explorer
可能原因
使用一个Action的派生类而没有实现perform()方法或execute()方法 。在Struts1.0中实现的是perform()方法,在Struts1.1中实现的是execute()方法,但Struts1.1向后兼容perform()方法 。但你使用Struts1.1创建一个Action的派生类,并且实现了execute()方法,而你在Struts1.0中运行的话,就会得到"Document contained nodata" error message in Netscape or a completely empty (no HTML whatsoever) page rendered in Microsoft Internet Explorer.”的错误信息 。
异常
ServletException: BeanUtils.populate
解决方案
在用Struts上传文件时,遇到了javax.servlet.ServletException: BeanUtils.populate异常 。
我的ActionServlet并没有用到BeanUtils这些工具类 。后来仔细检查代码发现是在jsp文件里的form忘了加enctype= amp;quot;multipart/formdata" 了 。所以写程序遇到错误或异常应该从多方面考虑问题存在的可能性,想到系统提示信息以外的东西 。
1. 定义Action后, 如果指定了name, 那么必须要定义一个与它同名的FormBean才能进行form映射.2. 如果定义Action后, 提交页面时出现"No input attribute for mapping path..." 错误, 则需要在其input属性中定义转向的页面.3. 如果插入新的数据时出现"Batch update row count wrong:..." 错误, 则说明XXX.hbm.xml中指定的key的类型为原始类型(int, long),因为这种类型会自动分配值, 而这个值往往会让系统认为已经存在该记录, 正确的方法是使用java.lang.Integer或java.lang.Long对象.4. 如果插入数据时出现"argument type mismatch" 错误, 可能是你使用了Date等特殊对象, 因为struts不能自动从String型转换成Date型,所以, 你需要在Action中手动把String型转换成Date型.5. Hibernate中, Query的iterator()比list()方法快很多.6. 如果出现"equal symbol expected" 错误, 说明你的strtus标签中包含另一个标签或者变量, 例如:
或者
"/
这样的情况...
错误:Exception in thread "main" org.hibernate.exception.SQLGrammarException: Could not execute JDBC batch update原因与解决: 因为Hibernate Tools(或者Eclipse本身的Database Explorer)生成*.hbn.xml工具中包含有catalog="***"(*表示数据库名称)这样的属性,将该属性删除就可以了
错误:org.hibernate.ObjectDeletedException: deleted object would be resaved by cascade (remove deleted object from associations)
原因与解决:
方法1 删除Set方的cascade
方法2 解决关联关系后,再删除
方法3 在manytoone方增加cascade 但值不能是none
最后一招:
检查一下hashCode equals是否使用了id作为唯一标示的选项了gajava代码;我用uuid.hex时是没有问题的;但是用了native,就不行了 , 怎么办?删除啊gajava代码!
问题:今天用Tomcat 5.5.12 , 发现原来很好用的系统不能用了 , 反复测试发现页面中不能包含taglib , 否则会出现以下提示:HTTP Status 500 type Exception reportMessage description The server encountered an internal error () that prevented it from fulfilling this request.exceptionorg.apache.jasper.JasperException: /index.jsp(1,1) Unable to read TLD "METAINF/tlds/strutsbean.tld" from JAR file"file:*****/WEBINF/lib/struts.jar":原因:更新了工程用的lib文件夹下的jar,发布时也发布了servlet.jar和jspapi.jar 。解决:把jspapi.jar删除就解决这个问题了 。
java画乌龟首先,手动画一个小乌龟,如下:
然后,按照Java绘图基本步骤一步步来 。
swing 编程步骤:
1. 继承JFrame
2. 定义组件
3.创建组件(构造函数)
4.添加组件
5.对窗体设置
6.显示窗体
最终效果如下:
代码如下:
/**
* 功能:画一个乌龟
*/
package com.test1;
import java.awt.*;
import javax.swing.*;
public class MyTortoiseextends JFrame{
MyPanel2 mp = null;
//构造函数
public MyTortoise(){
mp = new MyPanel2();
this.add(mp);
this.setTitle("小乌龟,丑丑哒");
this.setSize(400,300);
this.setVisible(true);
this.setLocation(300,200);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
MyTortoise mtg = new MyTortoise();
}
}
//我的面板 。只有JPanel有画图方法,JFrame没有,故必须在JFrame中添加JPanel
class MyPanel2 extends JPanel{
//定义一个乌龟
Tortoise t = null;
//构造函数
public MyPanel2(){
t = newTortoise(100,100);
}
//画乌龟
public void drawTortoise(int x, int y, Graphics g){
//1.画脸
g.setColor(Color.green);
g.fillOval(x 60, y, 30, 15);
//2.画左眼
g.setColor(Color.black);
g.fillOval(x 65, y 3, 5, 5);
//3.画右眼
g.fillOval(x 78, y 3, 5, 5);
//4.画脖子
g.setColor(Color.green);
g.fillOval(x 70, y, 10, 42);
//5.画乌龟壳
g.setColor(Color.red);
g.fillOval(x 40, y 40, 70, 100);
//6.画左上脚
g.setColor(Color.green);
g.fillOval(x 15, y 60, 30, 10);
//7.画右上脚
g.fillOval(x 105, y 60, 30, 10);
//8.画左下脚
g.fillOval(x 15, y 110, 30, 10);
//9.画右下脚
g.fillOval(x 105, y 110, 30, 10);
//10.画尾巴
g.setColor(Color.black);
g.drawLine(x 70,y 140,x 130,y 210);
g.drawOval(x 95, y 150, 30, 30);
}
【gajava代码 hellojava代码】
//覆盖JPanel的paint方法
//Graphics 是绘图的重要类 。你可以把他理解成一只画笔
public void paint(Graphics g){
//1.调用父类函数完成初始化任务
//这句话不能少
super.paint(g);
//2.画乌龟,调用方法即可
this.drawTortoise(50, 50, g);
}
}
//定义一个乌龟类
class Tortoise {
//表示乌龟的横坐标
int x = 0;
//表示乌龟的纵坐标
int y = 0;
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
public Tortoise(int x, int y){
this.x = x;
this.y = y;
}
}
java 中如何获得String name="李鹏" 首汉字的首拼音字母???我以前做过了.
实现方法一:具体的原理是有一个输入法字库,文本文件.在里面检索.
实现方法二,用一个函数取首字母的拼音,函数如下:(下面的函数是用VB的,因为JAVA的语法我不知道.)
Public Function py(mystr As String) As String
i = Asc(mystr)
Select Case i
Case -20319 To -20284: py = "A"
Case -20283 To -19776: py = "B"
Case -19775 To -19219: py = "C"
Case -19218 To -18711: py = "D"
Case -18710 To -18527: py = "E"
Case -18526 To -18240: py = "F"
Case -18239 To -17923: py = "G"
Case -17922 To -17418: py = "H"
Case -17417 To -16475: py = "J"
Case -16474 To -16213: py = "K"
Case -16212 To -15641: py = "L"
Case -15640 To -15166: py = "M"
Case -15165 To -14923: py = "N"
Case -14922 To -14915: py = "O"
Case -14914 To -14631: py = "P"
Case -14630 To -14150: py = "Q"
Case -14149 To -14091: py = "R"
Case -14090 To -13319: py = "S"
Case -13318 To -12839: py = "T"
Case -12838 To -12557: py = "W"
Case -12556 To -11848: py = "X"
Case -11847 To -11056: py = "Y"
Case -11055 To -10247: py = "Z"
Case Else: py = mystr
End Select
End Function
java编程,题目要求如下 。class Base
{
protected String name;
protected getScore(){return 0;};
}
class Team extends Base
{
private int gf;
private int ga;
private int pts;
private int gd;
public Team(int Gf,int Ga)
{
gf=Gf;
ga=Ga;
gd=gf-ga;
if(gd0)
{
pts=3
}
else if(gd==0)
{
pts=1;
}
else
{
pts=0;
}
}
public int getScore()
{
return pts*10gd*5gf;
}
}
//大概是这样了,看在我大晚上给你写代码的份上,给我分吧
如何用Java实现遗传算法?通过遗传算法走迷宫 。虽然图1和图2均成功走出迷宫gajava代码,但是图1比图2gajava代码的路径长gajava代码的多gajava代码,且复杂,遗传算法可以计算出有多少种可能性,并选择其中最简洁gajava代码的作为运算结果 。
示例图1:
示例图2:
实现代码:
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Random;
/**
* 用遗传算法走迷宫
*
* @author Orisun
*
*/
public class GA {
int gene_len; // 基因长度
int chrom_len; // 染色体长度
int population; // 种群大小
double cross_ratio; // 交叉率
double muta_ratio; // 变异率
int iter_limit; // 最多进化的代数
Listboolean[] individuals; // 存储当代种群的染色体
Labyrinth labyrinth;
int width;//迷宫一行有多少个格子
int height;//迷宫有多少行
public class BI {
double fitness;
boolean[] indv;
public BI(double f, boolean[] ind) {
fitness = f;
indv = ind;
}
public double getFitness() {
return fitness;
}
public boolean[] getIndv() {
return indv;
}
}
ListBI best_individual; // 存储每一代中最优秀的个体
public GA(Labyrinth labyrinth) {
this.labyrinth=labyrinth;
this.width = labyrinth.map[0].length;
this.height = labyrinth.map.length;
chrom_len = 4 * (width height);
gene_len = 2;
population = 20;
cross_ratio = 0.83;
muta_ratio = 0.002;
iter_limit = 300;
individuals = new ArrayListboolean[](population);
best_individual = new ArrayListBI(iter_limit);
}
public int getWidth() {
return width;
}
public void setWidth(int width) {
this.width = width;
}
public double getCross_ratio() {
return cross_ratio;
}
public ListBI getBest_individual() {
return best_individual;
}
public Labyrinth getLabyrinth() {
return labyrinth;
}
public void setLabyrinth(Labyrinth labyrinth) {
this.labyrinth = labyrinth;
}
public void setChrom_len(int chrom_len) {
this.chrom_len = chrom_len;
}
public void setPopulation(int population) {
this.population = population;
}
public void setCross_ratio(double cross_ratio) {
this.cross_ratio = cross_ratio;
}
public void setMuta_ratio(double muta_ratio) {
this.muta_ratio = muta_ratio;
}
public void setIter_limit(int iter_limit) {
this.iter_limit = iter_limit;
}
// 初始化种群
public void initPopulation() {
Random r = new Random(System.currentTimeMillis());
for (int i = 0; ipopulation; i) {
int len = gene_len * chrom_len;
boolean[] ind = new boolean[len];
for (int j = 0; jlen; j)
ind[j] = r.nextBoolean();
individuals.add(ind);
}
}
// 交叉
public void cross(boolean[] arr1, boolean[] arr2) {
Random r = new Random(System.currentTimeMillis());
int length = arr1.length;
int slice = 0;
do {
slice = r.nextInt(length);
} while (slice == 0);
if (slicelength / 2) {
for (int i = 0; islice; i) {
boolean tmp = arr1[i];
arr1[i] = arr2[i];
arr2[i] = tmp;
}
} else {
for (int i = slice; ilength; i) {
boolean tmp = arr1[i];
arr1[i] = arr2[i];
arr2[i] = tmp;
}
}
}
// 变异
public void mutation(boolean[] individual) {
int length = individual.length;
Random r = new Random(System.currentTimeMillis());
individual[r.nextInt(length)] ^= false;
}
// 轮盘法选择下一代,并返回当代最高的适应度值
public double selection() {
boolean[][] next_generation = new boolean[population][]; // 下一代
int length = gene_len * chrom_len;
for (int i = 0; ipopulation; i)
next_generation[i] = new boolean[length];
double[] cumulation = new double[population];
int best_index = 0;
double max_fitness = getFitness(individuals.get(best_index));
cumulation[0] = max_fitness;
for (int i = 1; ipopulation; i) {
double fit = getFitness(individuals.get(i));
cumulation[i] = cumulation[i - 1]fit;
// 寻找当代的最优个体
if (fitmax_fitness) {
best_index = i;
max_fitness = fit;
}
}
Random rand = new Random(System.currentTimeMillis());
for (int i = 0; ipopulation; i)
next_generation[i] = individuals.get(findByHalf(cumulation,
rand.nextDouble() * cumulation[population - 1]));
// 把当代的最优个体及其适应度放到best_individual中
BI bi = new BI(max_fitness, individuals.get(best_index));
// printPath(individuals.get(best_index));
//System.out.println(max_fitness);
best_individual.add(bi);
// 新一代作为当前代
for (int i = 0; ipopulation; i)
individuals.set(i, next_generation[i]);
return max_fitness;
}
// 折半查找
public int findByHalf(double[] arr, double find) {
if (find0 || find == 0 || findarr[arr.length - 1])
return -1;
int min = 0;
int max = arr.length - 1;
int medium = min;
do {
if (medium == (minmax) / 2)
break;
medium = (minmax) / 2;
if (arr[medium]find)
min = medium;
else if (arr[medium]find)
max = medium;
else
return medium;
} while (minmax);
return max;
}
// 计算适应度
public double getFitness(boolean[] individual) {
int length = individual.length;
// 记录当前的位置,入口点是(1,0)
int x = 1;
int y = 0;
// 根据染色体中基因的指导向前走
for (int i = 0; ilength; i) {
boolean b1 = individual[i];
boolean b2 = individual[i];
// 00向左走
if (b1 == falseb2 == false) {
if (x0labyrinth.map[y][x - 1] == true) {
x--;
}
}
// 01向右走
else if (b1 == falseb2 == true) {
if (x1widthlabyrinth.map[y][x1] == true) {
x;
}
}
// 10向上走
else if (b1 == trueb2 == false) {
if (y0labyrinth.map[y - 1][x] == true) {
y--;
}
}
// 11向下走
else if (b1 == trueb2 == true) {
if (y1heightlabyrinth.map[y1][x] == true) {
y;
}
}
}
int n = Math.abs(x - labyrinth.x_end)Math.abs(y -labyrinth.y_end)1;
//if(n==1)
//printPath(individual);
return 1.0 / n;
}
// 运行遗传算法
public boolean run() {
// 初始化种群
initPopulation();
Random rand = new Random(System.currentTimeMillis());
boolean success = false;
while (iter_limit--0) {
// 打乱种群的顺序
Collections.shuffle(individuals);
for (int i = 0; ipopulation - 1; i= 2) {
// 交叉
if (rand.nextDouble()cross_ratio) {
cross(individuals.get(i), individuals.get(i1));
}
// 变异
if (rand.nextDouble()muta_ratio) {
mutation(individuals.get(i));
}
}
// 种群更替
if (selection() == 1) {
success = true;
break;
}
}
return success;
}
//public static void main(String[] args) {
//GA ga = new GA(8, 8);
//if (!ga.run()) {
//System.out.println("没有找到走出迷宫的路径.");
//} else {
//int gen = ga.best_individual.size();
//boolean[] individual = ga.best_individual.get(gen - 1).indv;
//System.out.println(ga.getPath(individual));
//}
//}
// 根据染色体打印走法
public String getPath(boolean[] individual) {
int length = individual.length;
int x = 1;
int y = 0;
LinkedListString stack=new LinkedListString();
for (int i = 0; ilength; i) {
boolean b1 = individual[i];
boolean b2 = individual[i];
if (b1 == falseb2 == false) {
if (x0labyrinth.map[y][x - 1] == true) {
x--;
if(!stack.isEmpty()stack.peek()=="右")
stack.poll();
else
stack.push("左");
}
} else if (b1 == falseb2 == true) {
if (x1widthlabyrinth.map[y][x1] == true) {
x;
if(!stack.isEmpty()stack.peek()=="左")
stack.poll();
else
stack.push("右");
}
} else if (b1 == trueb2 == false) {
if (y0labyrinth.map[y - 1][x] == true) {
y--;
if(!stack.isEmpty()stack.peek()=="下")
stack.poll();
else
stack.push("上");
}
} else if (b1 == trueb2 == true) {
if (y1heightlabyrinth.map[y1][x] == true) {
y;
if(!stack.isEmpty()stack.peek()=="上")
stack.poll();
else
stack.push("下");
}
}
}
StringBuilder sb=new StringBuilder(length/4);
IteratorString iter=stack.descendingIterator();
while(iter.hasNext())
sb.append(iter.next());
return sb.toString();
}
}
怎么使用JAVA连接数据库?1、加载驱动程序 。
2、创建连接对象 。
3、创建sql语句执行对象。
4、执行sql语句 。
5、对执行结果进行处理 。
6、关闭相关的连接对象即可(顺序跟声明的顺序相反) 。
处理结果两种情况:
1、执行更新返回的是本次操作影响到的记录数 。
2、执行查询返回的结果是一个ResultSet对象 。
ResultSet包含符合SQL语句中条件的所有行,并且它通过一套get方法提供了对这些 行中数据的访问 。
扩展资料:
Statement
要执行SQL语句,必须获得java.sql.Statement实例 , Statement实例分为以下3 种类型:
1、执行静态SQL语句 。通常通过Statement实例实现 。
2、执行动态SQL语句 。通常通过PreparedStatement实例实现 。
3、执行数据库存储过程 。通常通过CallableStatement实例实现 。
参考资料:百度百科JAVA
关于gajava代码和hellojava代码的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息 , 记得收藏关注本站 。

    推荐阅读