【发布时间】:2014-10-31 13:52:34
【问题描述】:
我是 Scala 的新手,我正在编写一个程序,其中我有一个二进制图像点的 ArrayBuffer,我想在一个循环中检查该 ArrayBuffer 中是否存在特定点,不要添加。这是我正在处理的代码部分:
var vectVisitedPoint= new scala.collection.mutable.ArrayBuffer[Point]()
var pTemp=new Point (0,0)
var res = new Array[Byte](1)
img.get(pTemp.x.toInt,pTemp.y.toInt,res) //img is a binary image
var value1: Int=0
var value2: Int=0
scala.util.control.Breaks.breakable {
while((value1 < img.rows ) ){
while ( (value2 < img.cols )){
if (res(0) == -1 && vectVisitedPoint.exists(value1,value2)) {//this is where I want to check if the current point (value1,value2) is already exists in vectVisitedPoint
pTemp.x=(pTemp.x.toInt)+value1
pTemp.y=(pTemp.y.toInt)+value2
vectVisitedPoint.append(new Point(pTemp.x,pTemp.y)
scala.util.control.Breaks.break()
}
value2=value2+1
img.get(value1,value2,res)
}
value2=0
value1=value1+1
}
}
}
我想我需要用另一种方式来写它,但不知道怎么写?!
谢谢。
【问题讨论】:
-
您是从 Java 接口翻译代码吗? img.get 是您自己的方法还是来自 API?另外,您确定程序中的逻辑正确吗?如果您跳出循环,则使用 img.get 为上一行中的某个点计算开始。这是你想要的吗?
-
@Ashalynd 我没有翻译它,是的,如果我想在我的图像中找到一条线,该算法可以工作,但我想找到所有线比较它们并获得最长的 this is my original code 这是一个骨架图像有很多行。所以这里的一个用于查找线的起点,我想将该线的所有点放在一个数组缓冲区中以将其指向为已访问,下次我想找到另一个线的起点时,我检查它是否是否访问过。这就是程序的作用
标签: scala arraybuffer