我调了一下 是数组越界的异常
创新互联建站网络公司拥有10多年的成都网站开发建设经验,近千家客户的共同信赖。提供成都网站建设、成都做网站、网站开发、网站定制、买友情链接、建网站、网站搭建、响应式网站开发、网页设计师打造企业风格,提供周到的售前咨询和贴心的售后服务
try{Ordergra o=new Ordergra(mat);
o.outPut();
}
catch (Exception ex){System.out.print("yuejie");}
异常应该是是在o.outPut(); 之中 。
真心的没有做过 不过肯定的是这个需要用到文件的迭代 ,如果是文件夹
让文件夹里面的文件组成文件数组 forZ循环迭代
如果是图片文件的话,判断图片文件的类型 case语句 判断打印
横向和纵向的路径是指什么意思 谢谢
java.awt.image.BufferedImage bi = javax.imageio.ImageIO.read(file);
bi.getWidth(); //获得 宽度
bi.getHeight() ;//获得 高度
高度大于宽带纵向 相反就是横向
/**
* 在dir目录及其子目录中
* 查找符合给定格式的文件
* @param dir 查找的文件夹
* @param regex 文件格式正则表达式
* @return 找到的文件对象数组
*/
public static File[] search(File dir,final String regex){
DequeFile stack = new LinkedListFile();
DequeFile allDir = new LinkedListFile();
stack.push(dir);
//获得所有文件夹,包括深层目录
while(!stack.isEmpty()){
dir = stack.poll();
allDir.push(dir);
File[] dirs = dir.listFiles(new FileFilter(){
public boolean accept(File f){
return f.isDirectory();//只列出子目录
}
});
for(File f:dirs){
stack.push(f);
}
}
//allDir中所有的目录中匹配的文件
//放入List
ArrayListFile list = new ArrayListFile();
while(!allDir.isEmpty()){
File d = allDir.pop();
File[] files = d.listFiles(new FileFilter(){
public boolean accept(File f) {
//目录不要
if(f.isDirectory()) {return false;}
//只要匹配的文件
return f.getName().matches(regex);
}
});
for(File f:files){
list.add(f);
}
}
File[] arr = new File[list.size()];
return list.toArray(arr);
}
第一个参数是路径,第二个匹配文件类型。
宽度优先算法指的就是先遍历第一层再遍历第二层?
图的宽度优先?有根节点吧
如果是的话:
定义一个队列,队列不只存储元素的引用,还存储元素的层数
然后把根节点入队,进入循环:
queue.push(1); //根节点属于第一层
queue.push(root); //根节点入队
while(!queue.isEmpty()){
for(int i = 0; i count; i++){
int layer = queue.pop();
Object obj = queue.pop();
println("Item:" + obj.toString() + " Layer:" + layer); //输出节点和层数
//对于访问完的节点,将他的下一层孩子节点加入队列,并把孩子节点的层数设置为当前节点层数+1
for(Object item : obj.childNodeList){
queue.push(layer + 1);
queue.push(item);
}
}
}
循环结束,图遍历完毕。
以上代码的queue这里只用了一个,可能在实践中一个队列同时存储layer(Integer)和Node(Object)只能用queueObject了,也可以使用两个队列,一个存Layer(queueInteger),一个存Node(queueNode)
你好!
两个运行环境不同,是造成代码运行不同的主要原因。
左图应为jdk1.7或以下版本,右图为jdk1.8。
ConcurrentModificationException:当方法检测到对象的并发修改,但不允许这种修改时,抛出此异常。
产生的原因:
迭代器是依赖于集合而存在的,在判断成功后,集合的中新添加了元素,而迭代器却不知道,所以就报错了,这个错叫并发修改异常。
简单描述就是:迭代器遍历元素的时候,通过集合是不能修改元素的。
jdk1.8中解决了之前HashMap扩容引发的线程不安全,但它仍然属于非线程安全的。
将HashMap替换为ConcurrentHashMap,可以解决环境问题所引起的问题。
希望对你有帮助!