Image.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
Trace(array);
.....
int print_prog;
int total_pixels = mPixels_printedpixelcomparison.capacity();
**print_prog** = (printedpixel/total_pixels)*100;
printProgress.setProgress(**print_prog**);
......
}
private Bitmap Trace(int[] imageArray)
{
.....
printedpixel +=100;
.....
}
在上面的代码 print_prog 总是为零,我的进度条中没有任何变化(它只是空白)原因为零......任何人都可以帮我解决这个问题吗?
答案 0 :(得分:2)
这里的问题是int
分裂。在Java中,int
除法截断余数,因此它可以返回int
。
(printedpixel/total_pixels)*100;
因此, printedpixel/total_pixels
将始终返回0。 0 * 100总是为0。
您可以使用double
或float
来解决此问题。
double print_prog;
double total_pixels = (double) mPixels_printedpixelcomparison.capacity();
**print_prog** = (printedpixel/total_pixels)*100;
printProgress.setProgress(**print_prog**);
答案 1 :(得分:1)
@ nicholas.hauschild的答案是正确的,但更简单,更快速的解决方案将是取代
(printedpixel/total_pixels)*100;
与
(printedpixel*100/total_pixels);