我正在做一个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”
的情况下解决这个问题答案 0 :(得分:6)
如果您真的想使用循环划分两个数字,可以像下面的代码一样编写
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++;
}
}
答案 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;
}
}