System.print.out如果一个整数是另一个的倍数

时间:2015-03-21 20:26:41

标签: java

我正在编写一个用户输入2个整数的程序,然后程序判断第一个是否是第二个的倍数并打印结果。

这是我的代码:

package assignmentsmodule1_exercise2.pkg16;

import java.util.Scanner;

public class AssignmentsModule1_Exercise216 {

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

        int number1;
        int number2;

        System.out.print("Enter first number: ");
        number1 = input.nextInt();

        System.out.print("Enter second number: ");
        number2 = input.nextInt();

        if (number1 % number2 == number1);
        System.out.printf("%d % %d%n", number1, number2);
    }

}

每次运行程序时都会出现错误消息。

以下是错误代码:

Exception in thread "main" java.util.IllegalFormatFlagsException: Flags = ' '
    at java.util.Formatter$FormatSpecifier.checkText(Formatter.java:3037)
    at java.util.Formatter$FormatSpecifier.<init>(Formatter.java:2733)
    at java.util.Formatter.parse(Formatter.java:2560)
    at java.util.Formatter.format(Formatter.java:2501)
    at java.io.PrintStream.format(PrintStream.java:970)
    at java.io.PrintStream.printf(PrintStream.java:871)
    at      assignmentsmodule1_exercise2.pkg16.AssignmentsModule1_Exercise216.main(AssignmentsModule1_Exercise216.java:34)
Java Result: 1

有没有人可以帮我解决问题?

4 个答案:

答案 0 :(得分:4)

当M%N == 0

时,M可被N整除

你的行

if (number1 % number2 == number1);

应该是

if (number1 % number2 == 0)

(注意我在评论中删除了@Sotirios提到的;

您还需要在以下行中转义文字%

System.out.printf("%d % %d%n", number1, number2);

应该是

System.out.printf("%d %% %d%n", number1, number2);

此外,您有三个占位符,但只有两个参数。

答案 1 :(得分:0)

你的printf语句没有转义%符号。 你的多重性测试也是错误的。

答案 2 :(得分:0)

你的printf需要转义'%'字符:

System.out.printf("%d %% %d%n", number1, number2);

只需添加一个额外的'%'即可逃脱它。

答案 3 :(得分:0)

您还没有在printf函数中转义%字符。不允许单独使用%,Java会尝试将其与下一个空格字符组合。使用另一个%来逃避即。写%%而不是。

<强>来源: Java: Literal percent sign in printf statement