用Java实现分数的求逆

用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; //

分数转换分子和分母。 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; //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值,并以二进制形式打印,您可以很容易理解。