我该如何修复这个程序? (关于%)

时间:2013-11-08 14:41:15

标签: java

这是我的程序,现在26%6的结果应该是2.但是我的程序给了我20,14,8和2.我该如何解决这个问题?我是初学者,所以请说些我理解的内容!

public class Modulus {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);

        int A, B;

        System.out.println("Enter first number:");
        A = scan.nextInt();
        System.out.println("Enter second number:");
        B = scan.nextInt();

        int C = A;

        while (C >= B) {
            C = C - B;
            System.out.println("The remainder is: " + C);
        }
    }
}

5 个答案:

答案 0 :(得分:2)

System.out.println放在while循环之外。否则,每次从C中减去B的值时都会打印

       while (C>= B)
       {
           C= C-B;
           System.out.println("The remainder is: " + C ) ;  // printing each time
       }

       while (C>= B)
       {
           C= C-B; 
       }
       System.out.println("The remainder is: " + C ) ;

答案 1 :(得分:1)

您在循环体内打印。我认为你需要在循环完成时只打印一次。

答案 2 :(得分:1)

我认为您知道可以直接使用%运算符吗?例如,System.out.println("The remainder is: " + (A % B));

你的循环错误是你的print语句在循环中;它应该在结束后,只在减法结束后打印。

P.S。考虑为负数或零数添加一些特殊处理,或者在这种情况下你的程序可以循环很长时间......

答案 3 :(得分:0)

像这样

           while (C>= B)
       {
           C= C-B;


       }
   System.out.println("The remainder is: " +  (A % B) ) ;

}

答案 4 :(得分:0)

我会这样做(消除C变量,使用 Java命名约定重命名变量并关闭scan实例):

import java.util.Scanner;

public class Modulus {

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int operand1, operand2;
        System.out.println("Enter first number:");
        operand1 = scan.nextInt();
        System.out.println("Enter second number:");
        operand2 = scan.nextInt();
        while (operand1 >= operand2) {
            operand1 = operand1 - operand2;
        }
        System.out.println("The remainder is: " + operand1);
        scan.close();
    }
}