3

こんにちは、"/" 演算子を使用せずに 2 つの指定された数値を除算する 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

ループを使用して 2 つの数値を除算したい場合は、次のコードのように記述できます。

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

ループの後cは商にans1等しく、除算のリマインダーに等しい

abs1とが符号付きの数値の場合abs2、以下のコードは割り算で機能するはずです

 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 に答える