-3

这是我的程序,现在 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);
        }
    }
}
4

5 回答 5

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 ) ;
于 2013-11-08T14:44:27.900 回答
1

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

于 2013-11-08T14:44:33.677 回答
1

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

您的循环的错误是您的打印语句在循环内;它应该在结束之后,仅在减法完成后打印。

PS考虑为负数或零数添加一些特殊处理,否则在这种情况下您的程序可能会循环很长时间......

于 2013-11-08T14:45:43.857 回答
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();
    }
}
于 2013-11-08T15:00:43.917 回答
0

像这样放

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


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

}
于 2013-11-08T14:47:16.797 回答