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块来解决这个问题。
答案 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...!");
}
}
}