我需要帮助这么糟糕。我已经做了两个小时的家庭作业,我无法理解我的逻辑。我们不允许使用%或/运算符,但我们必须通过减去除法来划分并找到余数 - 我的程序打印出除法部分而不是余数。有什么线索吗?我正在学习,我知道这是一个小错误,但我无法弄清楚。我已经检查了所有其他相似的问题,但他们没有任何帮助。谢谢大家。
到目前为止这是我的程序
import java.util.Scanner;
public class assignment4 {
public static void main(String args[]) {
Scanner inputReader = new Scanner(System.in);
int multiplicand, multiplier;
double dividend, divisor, countDivisor, countDividend, remainder;
int total=0, total2 = 0, countMult;
System.out.print("Enter a multiplican: ");
multiplicand = inputReader.nextInt();
System.out.print("Enter a multiplier: ");
multiplier = inputReader.nextInt();
countMult = multiplier;
while(multiplier > 0) {
total = total + multiplicand;
multiplier--;
}
System.out.println(multiplicand + " times " + countMult + " equals " + total );
System.out.print("Enter a dividend: ");
dividend = inputReader.nextInt();
System.out.print("Enter a divisor: ");
divisor = inputReader.nextInt();
countDivisor = divisor;
countDividend = dividend;
while(dividend >= 0) {
dividend = dividend - divisor;
divisor--;
}
remainder = divisor - 1;
System.out.print(countDividend + " divided by " + countDivisor + " equeals " + divisor + " with a remainder of " + remainder);
}
}
答案 0 :(得分:0)
您的while loop
正在迭代,而被除数为> = 0
示例dividend = 10和divisor = 3
循环
10 - 3 = 7 //>> = 0 true
7 - 3 = 4 //> = 0真实
4 - 3 = 1 //> = 0为真,它应该在此停止,因为被分红是<除数
1 - 3 = -2 //>> = 0 false
这会做分裂
while(dividend >= divisor){
dividend -= divisor;
// count your result ++
}
System.out.println(dividend);//this is the remainder
答案 1 :(得分:0)
你所拥有的一切都是很好的例外你的while循环和你的剩余计算:
这是一个有用的调整:
int result = 0;
while (dividend >= divisor)
{
dividend = dividend - divisor;
result = result + 1;
}
remainder = dividend;
System.out.print(countDividend + " divided by " + countDivisor + " equals " + integer_result + " with a remainder of " + remainder);
顺便说一句,你的程序不能很好地处理负数。在提交作业之前,您应该考虑修复该错误。
答案 2 :(得分:0)
你这样做完全错了,而你的教授会让你感觉不好。
要乘以你的班次并添加:
1 0 1 0 -- bits A B C D == 10
x 1 1 0 0 -- bits E F G H == 12
D为零,因此第一个周期(将E F G H乘以零)导致
0 0 0 0
Shift E F G H留下一个
1 1 0 0 0
位C为1,结果为
1 1 0 0 0
Shift E F G H留下一个
1 1 0 0 0 0
B位为0所以没有变化
Shift E F G H留下一个
1 1 0 0 0 0 0
位A为1所以添加
1 1 0 0 0 0 0
+ 1 1 0 0 0
-------------
1 1 1 1 0 0 0
分裂是一回事,只是倒退。