Java 用乘法和除法交换两个数

Java 用乘法和除法交换两个数,java,Java,这将生成一个算术异常。我的问题是如何使用try-and-catch块来解决这个问题。您可以编写类似的代码,它将处理除法的零异常情况 在您的调用函数中,您可以这样做 class Swap{ public static void main(String[] args){ int a = 5; int b = 0; a = a*b; b = a/b; a = a/b; } } 现在创建一个交换函数 if

这将生成一个算术异常。我的问题是如何使用try-and-catch块来解决这个问题。

您可以编写类似的代码,它将处理除法的零异常情况

在您的调用函数中,您可以这样做

class Swap{
    public static void main(String[] args){
        int a = 5;
        int b = 0;
        a = a*b;
        b = a/b;
        a = a/b;
    }
}
现在创建一个交换函数

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);
}

希望这对您有所帮助。

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

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

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);

}

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

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

你想除以0,这是荒谬的。我认为你需要修改你的算法。捕获该错误不会有任何好处。只要将
b
更改为非零值,您的代码就会正常工作。顺便说一下,这可能不是交换两个数字的好方法。你需要应用数学基础来解决它,例如:不允许被零除。异常不是解决您问题的方法。当您知道“可能会出错”时,您使用异常,而不是保护自己免受明显错误代码的影响。保护自己不被零除的方法是检查(b!=0),但正如您自己声明的那样,它将是非零。
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...!");
        }       
    }
 }