我正在编写一个用户输入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
有没有人可以帮我解决问题?
答案 0 :(得分:4)
你的行
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会尝试将其与下一个空格字符组合。使用另一个%来逃避即。写%%而不是。