使用循环语句划分两个数字

时间:2012-10-05 06:31:54

标签: java division

我正在做一个java活动,它将分割两个给定的数字,而不使用“/”运算符。我想使用循环语句。

System.out.print("Enter Divident: ");
int ans1 = Integer.parseInt(in.readLine());
System.out.print("Enter Divisor: ");
int ans2 = Integer.parseInt(in.readLine());

输出结果为:

  Enter Dividend: 25
  Enter Divisor 5
  5

如何在不使用“ans1 / ans2”

的情况下解决这个问题

6 个答案:

答案 0 :(得分:6)

如果您真的想使用循环划分两个数字,可以像下面的代码一样编写

 int c=0;
 while(ans1 >= ans2){
     ans1 -= ans2;
     c++;
 }

循环后c等于商,ans1等于分裂提醒

如果abs1abs2是签名号码,则代码下方的代码应该适用于分部

 boolean n1 = (ans1 & (1<<31))!=0;
 boolean n2 = (ans2 & (1<<31))!=0;
 ans1 = Math.abs(ans1);
 ans2 = Math.abs(ans2);

 int c=0;
 while(ans1 >= ans2){
     ans1 -= ans2;
     c++;
 }
 if(!n1 && n2) c = -c;
 else if(n1 && !n2){
     c = -c;
     if(ans1 > 0){
         ans1 = ans2 - ans1;
         c--;
     }
 }else if(n1 && n2){
     if(ans1 > 0){
         ans1 = ans2 - ans1;
         c++;
     }
 }

答案 1 :(得分:1)

使用递归:

//  Calculate: a / b
public int divide (int a, int b) {
    if ( a < b ) {
        return 0;
    } else {
        return 1 + divide ( a - b, b );
    }
}

答案 2 :(得分:0)

如果你真的想在没有 / 运算符的情况下这样做,并且我猜测可能没有移位,那么最简单的循环方法就是计算你需要从ans1中减去ans2而没有余数的次数低于ans1。

伪码:

numtimes init at 0
counter init at ans1
while counter is greater than ans2
    subtract ans2 from counter
    numtimes increase by 1

check numtimes

答案 3 :(得分:0)

您可以通过以下方式完成此操作:

System.out.print("Enter Divident: ");
int ans1 = Integer.parseInt(in.readLine());
System.out.print("Enter Divisor: ");
int ans2 = Integer.parseInt(in.readLine());
int count=0;
while(ans1>=ans2)
{
ans1=ans1-ans2;
count++;
}
System.out.println(count);

答案 4 :(得分:0)

BigInteger使用/运算符完成这一操作。

(new BigInteger(ans1 + "")).divide(new BigInteger(ans2 + ""))

答案 5 :(得分:-1)

如下所示?

int i=1;
        int mul;
        while(true)
        {
            mul = i++;
            if(mul*(ans2)==ans1)
            {
                System.out.println(mul);
                break;
            }
            else if(mul*(ans2)>ans1)
            {
                System.out.println("Cannot be divided");
                break;
            }
        }