作者H45 (!H45)
站内java
标题Re: [闲聊] 1.5 出现的多重参数
时间Thu Aug 16 15:58:02 2007
※ 引述《TonyQ (骨头)》之铭言:
: 很久以前就知道的东西 , 不过一直没有机会拿出来用 ,
: 加上是限定 1.5 以後才有的新特性 .....
: 不过既然最近会用到,拿来说嘴一下也好。:P
恕删
: 如果有人知道这有甚麽其他用途的话,倒是希望不吝分享一下...XD
我最近也用到了,可以用在「平均」的运算
/**
* Compute the average number of input sequence.
*
* @param x input sequence of x1, x2, ... xn
* @return the average of x
*/
private static int average(int ... x) {
int result = 0;
for (int i: x) {
result += i;
}
result /= x.length;
return result;
}
推广出去的话,所有统计类的运算都适用这种多种参数的方法
这种写法在多次而少量的参数传递特别有效果
好比说在做 Haar Transform 的时候,会使用运算多次的平均值
但是直接写成 (x + y) / 2 会影响程式码的可读性
倒不如写成 average(x, y) 还比较像一篇文章
private static int[][] horizontalHaar(int[][] planePixels) {
final int height = planePixels.length;
final int width = planePixels[0].length;
final int segmentWidth = width / 2;
final int [][] horizontalDetails = new int[height][width];
for (int i=0; i<height; i++) {
for (int j=0; j<segmentWidth; j++) {
horizontalDetails[i][j] =
average(planePixels[i][2*j], planePixels[i][2*j+1]);
}
}
// TODO: horizontalHaar method stub
return null;
}
--
题外话,除了 planePixels[0].length 可以取得二维阵列的长度之外
还有什麽好办法可以取得长度吗?
因为我感觉 planePixels[0] 实在很奇怪。。。不应该出现 0 这个索引值。。。
类似 planePixels.getWidth() 和 planePixels.getHeight() 这样的东西
不知道存不存在呢?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.116.247.13