Java 无除法和模算子的商和余数
在过去的两个小时左右,我一直在研究这个问题,但我遇到了一个障碍。实际上,我可以执行除法,但当打印不是0的余数时,输出不匹配。我想知道我做错了什么Java 无除法和模算子的商和余数,java,Java,在过去的两个小时左右,我一直在研究这个问题,但我遇到了一个障碍。实际上,我可以执行除法,但当打印不是0的余数时,输出不匹配。我想知道我做错了什么 public class Division { public static void main(String[] args) { int numerator = 0; int numeratorprint = 0; int denominator = 0; int product =
public class Division {
public static void main(String[] args) {
int numerator = 0;
int numeratorprint = 0;
int denominator = 0;
int product = 0;
int remainder = 0;
int counter = 1;
Scanner input;
input = new Scanner(System.in);
System.out.print("Enter two positive intergers for division:\n");
numerator = input.nextInt();
numeratorprint = numerator;
denominator = input.nextInt();
while ((numerator < 0) || (denominator < 0)) {
System.out.print("Enter two positive intergers for division:\n");
numerator = input.nextInt();
denominator = input.nextInt();
}
if (numerator == 0){
System.out.print(numerator + "/" + denominator + " = " + numerator + " with a remainder of " + numerator);
}
else if (denominator == 0){
System.out.print("This result is undefined (Cannot divide by Zero)");
}
else if (denominator > numerator){
System.out.print("Cannot do proper fractions");
}
else {
while (numerator > denominator){
counter++;
numerator = numerator - denominator;
}
}
product = counter * denominator;
remainder = numeratorprint - product;
System.out.println(numeratorprint + " / " + denominator + " = " + counter + " with a remainder of " + remainder);
}
}
/* Sample I/O 1
Enter two positive intergers for division:
25
5
OUTPUT:
25 / 5 = 5 with a remainder of 0
Sample I/O 2
Enter two positive intergers for division:
27
5
OUTPUT:
27 / 5 = 6 with a remainder of -3
*/
公共类划分{
公共静态void main(字符串[]args){
整数分子=0;
int numeratorprint=0;
int分母=0;
int乘积=0;
整数余数=0;
int计数器=1;
扫描仪输入;
输入=新扫描仪(System.in);
System.out.print(“为除法输入两个正整数:\n”);
分子=input.nextInt();
numeratorprint=分子;
分母=input.nextInt();
while((分子<0)| |(分母<0)){
System.out.print(“为除法输入两个正整数:\n”);
分子=input.nextInt();
分母=input.nextInt();
}
如果(分子==0){
系统输出打印(分子+“/”+分母+“=”+分子+”,带“+分子”的余数);
}
else if(分母==0){
System.out.print(“此结果未定义(不能除以零)”;
}
else if(分母>分子){
系统输出打印(“无法完成正确的分数”);
}
否则{
while(分子>分母){
计数器++;
分子=分子-分母;
}
}
乘积=计数器*分母;
余数=numeratorprint-乘积;
System.out.println(numeratorprint+“/”+分母+“=”+计数器+”,余数为“+余数);
}
}
/*样本I/O 1
为除法输入两个正整数:
25
5.
输出:
25/5=5,余数为0
样本I/O 2
为除法输入两个正整数:
27
5.
输出:
27/5=6,余数为-3
*/
我认为您的计数器从1开始,而不是从0开始,出现了一个“关一”错误。我测试了一些数字,改变它似乎可以很好地解决它。所以改变
int counter = 1;
到
此外,还必须将else块上的while循环条件更改为
while (numerator >= denominator) {...
为了解释除数平均分配红利的情况。我在代码中看到了一些错误。 1.冗余变量 2.为什么不使用模数运算符? 3.您也可以删除while循环
public class Division {
public static void main(String[] args) {
Scanner input;
input = new Scanner(System.in);
System.out.print("Enter two positive intergers for division:\n");
int numerator = input.nextInt();
int numeratorprint = numerator;
int denominator = input.nextInt();
int quotient = 0;
int remainder = 0;
while ((numerator < 0) || (denominator < 0)) {
System.out.print("Enter two positive intergers for division:\n");
numerator = input.nextInt();
denominator = input.nextInt();
}
if (numerator == 0) {
System.out.print(numerator + "/" + denominator + " = " + numerator + " with a remainder of " + numerator);
} else {
if (denominator == 0) {
System.out.print("This result is undefined (Cannot divide by Zero)");
} else {
if (denominator > numerator) {
System.out.print("Cannot do proper fractions");
} else {
remainder = numerator % denominator;
quotient = ((numerator / denominator) - (remainder / denominator));
}
}
}
System.out.println(numeratorprint + " / " + denominator + " = " + quotient + " with a remainder of " + remainder);
}
}
公共类划分{
公共静态void main(字符串[]args){
扫描仪输入;
输入=新扫描仪(System.in);
System.out.print(“为除法输入两个正整数:\n”);
int分子=input.nextInt();
int numeratorprint=分子;
int分母=input.nextInt();
整数商=0;
整数余数=0;
while((分子<0)| |(分母<0)){
System.out.print(“为除法输入两个正整数:\n”);
分子=input.nextInt();
分母=input.nextInt();
}
如果(分子==0){
系统输出打印(分子+“/”+分母+“=”+分子+”,带“+分子”的余数);
}否则{
如果(分母==0){
System.out.print(“此结果未定义(不能除以零)”;
}否则{
if(分母>分子){
系统输出打印(“无法完成正确的分数”);
}否则{
余数=分子%分母;
商=((分子/分母)-(余数/分母));
}
}
}
System.out.println(numeratorprint+“/”+分母+“=”+商+”,余数为“+余数);
}
}
注意,如果分子小于分母,则为适当分数。不正确的分数则相反。谢谢!,更正它。当计数器设置为零时,我得到的输出是:输入两个正整数进行除法:25 5 25/5=4,余数为5。我对计数器进行了一番研究,看看这是否是问题所在,但事实并非如此,我可能在其他地方犯了一个错误。等等,我之前说的你是对的,更改计数器可以修复分子<分母,而余数为0的情况。一定是逻辑上的某个地方出了问题,我会再检查一遍。啊!我发现了问题。您需要将else块中while循环的条件更改为while分子>=分母,以便计数器在等分的数字对上最后一次递增(其中余数=0)。我编辑了我的答案以反映这些启示。看来你和我一样都是新手——如果我有帮助的话,请接受/支持我的答案。伙计!!!,它起作用了,非常感谢,我对你的回复投了赞成票,但它说我没有足够的代表来展示我的赞成票。谢谢我的朋友。你也能接受我的回答吗?这是向上投票旁边的绿色复选标记。我相信你有这个能力,这对我的销售代表真的很有帮助!我相信以后我也能对你的问题投赞成票。编辑:谢谢!我应该在不使用模和除法运算符的情况下进行运算。好的,但是请检查计数器返回的值是否正确。打印值应为计数器-1
public class Division {
public static void main(String[] args) {
Scanner input;
input = new Scanner(System.in);
System.out.print("Enter two positive intergers for division:\n");
int numerator = input.nextInt();
int numeratorprint = numerator;
int denominator = input.nextInt();
int quotient = 0;
int remainder = 0;
while ((numerator < 0) || (denominator < 0)) {
System.out.print("Enter two positive intergers for division:\n");
numerator = input.nextInt();
denominator = input.nextInt();
}
if (numerator == 0) {
System.out.print(numerator + "/" + denominator + " = " + numerator + " with a remainder of " + numerator);
} else {
if (denominator == 0) {
System.out.print("This result is undefined (Cannot divide by Zero)");
} else {
if (denominator > numerator) {
System.out.print("Cannot do proper fractions");
} else {
remainder = numerator % denominator;
quotient = ((numerator / denominator) - (remainder / denominator));
}
}
}
System.out.println(numeratorprint + " / " + denominator + " = " + quotient + " with a remainder of " + remainder);
}
}