Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无除法和模算子的商和余数_Java - Fatal编程技术网

Java 无除法和模算子的商和余数

Java 无除法和模算子的商和余数,java,Java,在过去的两个小时左右,我一直在研究这个问题,但我遇到了一个障碍。实际上,我可以执行除法,但当打印不是0的余数时,输出不匹配。我想知道我做错了什么 public class Division { public static void main(String[] args) { int numerator = 0; int numeratorprint = 0; int denominator = 0; int product =

在过去的两个小时左右,我一直在研究这个问题,但我遇到了一个障碍。实际上,我可以执行除法,但当打印不是0的余数时,输出不匹配。我想知道我做错了什么

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);
    }
}