使用乘法和除法交换两个数字

时间:2017-09-17 04:47:16

标签: java

class Swap{
    public static void main(String[] args){
        int a = 5;
        int b = 0;
        a = a*b;
        b = a/b;
        a = a/b;
    }
}

这将生成ArithmeticException。我的问题是如何使用try和catch块来解决这个问题。

3 个答案:

答案 0 :(得分:0)

你可以写这样的东西,它将处理你的零异常分裂案例

在您的通话功能中,请执行此操作

if (x==0 || y == 0){
    swap(x+1,y+1,1); // Increment 1 so that it won't through exception
}
else{
swap(x,y,0);
}

现在创建一个交换功能

void swap(int x, int y, bool isSomeOneZero){
x = x * y; // x now becomes 50
y = x / y; // y becomes 10
x = x / y; // x becomes 5
if (isSomeOneZero){
    x = x - 1; // Decrement value by 1 which is incremented previously
    y = y - 1 ;
}
printf("After Swapping: x = %d, y = %d", x, y);

}

希望这会对你有所帮助。

答案 1 :(得分:0)

正如其他人已经说过的那样,使用乘法和除法逻辑交换两个数字并不是一个好方法。有更好,更直接的算法可以做到这一点。

但是,如果你必须使用你的方法,可能是由于练习或家庭作业,你可以将数字增加1,如果它是零,然后执行你的逻辑,最后递减另一个数字,因为它被交换,1。参见以下示例:

    int a = 5;
    int b = 0;
    boolean aplus = false;
    boolean bplus = false;
    if (a == 0) {
        a++;
        aplus = true;
    }
    if (b == 0) {
        b++;
        bplus = true;
    }
    a = a*b;
    b = a/b;
    a = a/b;

    if(aplus)b--;
    if(bplus)a--;

答案 2 :(得分:0)

/// Java程序,使用两个带有'*'和'/'运算符的变量来交换两个数字

class MulDivSwapping
{
      public static void main(String[] args)
      {
         try
         {
             int a=Integer.parseInt(args[0]);
             int b=Integer.parseInt(args[1]);
             System.out.println("Before swapping 'a' and  'b' values are: \n a="+a+"\n b=" +b);     
             if(a==0)
             {
                 a=b;
                 b=0;
             }
             else if(b==0)
             {
                 b=a;
                 a=0;
             }
             else           
             {
                a=a*b;  
                b=a/b;
                a=a/b;
             }
             System.out.println("After swapping 'a' and  'b' values are: \n a="+a+"\n b="+b);   
        }
        catch(Exception e)
        {
        System.out.println("please Enter the two integer values for 'a' and 'b' variables @ Runtime...!");
        }       
    }
 }