用Java实现分数的求逆
分数转换分子和分母。 2/1的倒数是1/2 到目前为止,我得到的是:用Java实现分数的求逆,java,Java,分数转换分子和分母。 2/1的倒数是1/2 到目前为止,我得到的是: public void inverse(){ numerator = denominator; denominator= numerator; } 这使得2/1的倒数等于2/2 我知道这是因为num=den(sonum=2)和den=num(soden=2) 如何切换以获取num=2和den=1?使用临时变量: public void inverse() { long x = numerator; //
public void inverse(){
numerator = denominator;
denominator= numerator;
}
这使得2/1的倒数等于2/2
我知道这是因为num=den(sonum=2)和den=num(soden=2)
如何切换以获取num=2和den=1?使用临时变量:
public void inverse() {
long x = numerator; //or int because i don't know what you use
numerator = denominator;
denominator = x;
}
public void inverse(){
long temp = numerator;
numerator = denominator;
denominator = temp;
}
对于ints来说,这是一个非常复杂的方法:
public void inverse() {
numerator ^= denominator;
denominator ^= denominator;
numerator ^= denominator;
}
要解决此问题,请创建一个临时变量:
public void inverse() {
long x = numerator; //or int because i don't know what you use
numerator = denominator;
denominator = x;
}
public void inverse(){
long temp = numerator;
numerator = denominator;
denominator = temp;
}
您需要做的是交换分子和分母,但您没有使用时态变量,因此其中一个运算符将丢失
public void inverse(){
Number temporalNumber = numerator;
numerator = denominator;
denominator = temporalNumber;
}
正如已经给出的答案一样,这里只是另一种不用临时变量交换数字的方法
int numerator = 10;
int denominator = 20;
System.out.println("Before " + numerator + " " + denominator);
numerator = numerator + denominator;
denominator = numerator - denominator;
numerator = numerator - denominator;
System.out.println("After " + numerator + " " + denominator);
输出
Before 10 20
After 20 10
方法
public void inverse() {
numerator = numerator + denominator;
denominator = numerator - denominator;
numerator = numerator - denominator;
}
使用位操作
numerator = numerator ^ denominator;
denominator = numerator ^ denominator;
numerator = numerator ^ denominator;
这回答了你的问题吗?不兼容类型:可能的有损转换从double到long。等一下编辑:现在可以用了吗?这不只是一个交换问题吗?谢谢。现在可以了。介意解释一下你是如何得到答案的吗?你为什么要使用这个:^?@Itamagreen,这是一个通过xoroh交换值的棘手方法。但是类型double显然不起作用(它应该很长,就像我的答案…0.0)这个问题没有说明类型,不是吗?@Itamagreen,好的,没有看到)@JCole
^
被称为按位ex或运算符,设置日志,在每个语句后打印a、b值,并以二进制形式打印,您可以很容易理解。