Java 用乘法和除法交换两个数
这将生成一个算术异常。我的问题是如何使用try-and-catch块来解决这个问题。您可以编写类似的代码,它将处理除法的零异常情况 在您的调用函数中,您可以这样做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
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...!");
}
}
}