9
回答
已知|a|=8,|b|=6,|a-b|=b-a,问a和b分别是多少!
终于搞明白,存储TCO原来是这样算的>>>   

已知|a|=8,|b|=6,|a-b|=b-a,问a和b分别是多少!

修改这道问题:
已知|a|=x,|b|=y,  问要使|a-b|=b-a 成立,a和 b 分别要如何从 x 和 y 取值 ?

解题代码说明:设一个整型二维数组 dat,用来存放每一对(行)存放一对待测试的 { x, y } 正整型数。 
测试 x==y 的情况:{1,1},{6.6}; x>y 的情况:{9,5}...;
x<y 的情况:{4,10},{5,9}...。
然后,调用 boolean validAB(int a , int b) 来检测每一对数据。

public  class A_B_Test {
	
static int dat[][]={{1,1},{6,6}, {6,8},
	{8,6},{5,9},{9,5},{4,10},{10,4}};
	
	boolean validAB(int a , int b) {
	return  Math.abs(a-b)==(b-a) ? true : false;
	}
	
	
	String test(int [][] data){
		String s = "组合测试结果\n";
		
	for(int i=0;i<dat.length; i++){
		s += "[" + dat[i][0] + "," + dat[i][1] + "]\t";
		s += "[" + dat[i][0] + "," + -dat[i][1] + "]\t";
		s += "[" + -dat[i][0] + "," + dat[i][1] + "]\t";
		s += "[" + -dat[i][0] + "," + -dat[i][1] + "]\n";				
		s += validAB(dat[i][0], dat[i][1]) + "\t";
		s += validAB(dat[i][0], -dat[i][1]) + "\t";
		s +=validAB(-dat[i][0], dat[i][1]) + "\t";
		s +=validAB(-dat[i][0], -dat[i][1]) + "\n";
		}
		
	return s;
	}
	
public static void main(String args[]){
	A_B_Test ab = new A_B_Test();
	System.out.println(ab.test(dat));
	}
}

输出:
组合测试结果
[1,1]   [1,-1]  [-1,1]  [-1,-1]
true    false   true    true
[6,6]   [6,-6]  [-6,6]  [-6,-6]
true    false   true    true
[6,8]   [6,-8]  [-6,8]  [-6,-8]
true    false   true    false
[8,6]   [8,-6]  [-8,6]  [-8,-6]
false   false   true    true
[5,9]   [5,-9]  [-5,9]  [-5,-9]
true    false   true    false
[9,5]   [9,-5]  [-9,5]  [-9,-5]
false   false   true    true
[4,10]  [4,-10] [-4,10] [-4,-10]
true    false   true    false
[10,4]  [10,-4] [-10,4] [-10,-4]
false   false   true    true

分析输出数据,得出答案:

  1. 若 x=0,y=0: a=±x  , b=±y
  2. 若 x==y: a=x,b=y; a=-x, b=y; 或 a=-x, b=-y
  3. 若 x>y: a=-x, b=±y 
  4. 若 x<y: a=±x, b=y 
顶部