3

嗨,我正在做一个 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”如何解决这个问题

4

6 回答 6

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++;
     }
 }
于 2012-10-05T06:36:22.837 回答
1

使用递归:

//  Calculate: a / b
public int divide (int a, int b) {
    if ( a < b ) {
        return 0;
    } else {
        return 1 + divide ( a - b, b );
    }
}
于 2012-10-05T06:37:59.550 回答
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
于 2012-10-05T06:33:56.207 回答
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);
于 2012-10-05T06:37:44.810 回答
0

从字面上看, BigInteger在没有/运算符的情况下可以做到这一点。

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

于 2012-10-05T06:40:18.967 回答
-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;
            }
        }
于 2012-10-05T06:44:59.047 回答