我正在查看“我的”数独Android应用程序的数独代码,我注意到了这段代码:
selX = Math.min(Math.max(x, 0), 8);
selY = Math.min(Math.max(y, 0), 8);
Math.min(Math.max(x, 0), 8)
和Math.min(Math.max(y, 0), 8)
的含义是什么?
答案 0 :(得分:1)
使用文档逐步分解:
http://docs.oracle.com/javase/7/docs/api/java/lang/Math.html#max(long
max(int a,int b)返回两个int值中较大的一个。
min(int a,int b)返回两个int值中较小的一个。
所以Math.min(Math.max(x,0),8);分解为:
int maximum = Math.max(x,0);
int final = Math.min(最大值,8);
答案 1 :(得分:0)
首先取x和0的最大值,所以如果x< 0,它将为零。
接下来取结果的最小值和8,因此最大值为8。
大致相同:
int selX = x;
if (selX < 0) selX = 0;
if (selX > 8) selX = 8;
或
int selX = (x < 0) ? 0 : ((x > 8) ? 8 : x);
答案 2 :(得分:0)
如果x介于0和8之间,则第一个返回x;如果x小于0,则返回0;如果x大于8,则返回8。
第二个以类似的方式工作。所以基本上你得到的数字肯定在0到8之间,包括在内。
Java Math class详细说明了min
和max
函数的功能。
答案 3 :(得分:0)
Sudoku意味着9 x 9个方块。您可以将它们从0到8编入索引.Math.min(Math.max(x,0),8)保证您获得该范围内的数字。是x>然后min(x,8)使其为8.如果x <0。 0然后max(x,0)使它为0.这就是全部。