gpt4 book ai didi

java - 查找 primeNumber 和repDigit 失败

转载 作者:行者123 更新时间:2023-11-30 06:25:14 25 4
gpt4 key购买 nike

我有一种方法可以判断一个数字是否是素数。它在我的测试类中工作,但是当我使用 System.outprintf 时,它失败了。与repDigit方法相同。

如有任何帮助,我们将不胜感激

求质数的方法:

/**
* Checks whether the number is a prime number.
*
* @param number Any number
* @return true if the number is prime, otherwise false
*/
public static boolean isPrime(int number) {
boolean isPrime = true;
if (number < 2) {
isPrime = false;
} else {
// Start counting from two to begin with even numbers
for (int i = 2; i < number/2; ++i) {
if (number % i == 0) {
isPrime = false;
}
}
}
return isPrime;
}

查找repDigit的方法:

 /**
* This method checks if numbers, after each other, are the same. We take
* modulus of the number, in order to get the last digit, as long as the
* number is above 0. The number is divided by 10, to end up with all
* remaining numbers. Then it checks, if the last digit + the remaining are
* the same
*
* @param number
* @return
*/
public static boolean isRepDigit(int number) {
int repDigit = number % 10;
boolean toReturn = true;
if (number < 10) {
toReturn = false;
} else {
while (number > 0) {
int digit = number % 10;
number = number / 10;
if (repDigit != digit) {
toReturn = false;
}
}
}
return toReturn;
}

主要方法:

    public static void main(String[] args) {
final int START = 5;
final int END = 100;
final int SPACE = digitCount(END);
for (int i = START; i < END; i++) {

System.out.printf("%" + SPACE + "d is a repdigit &n", isRepDigit(i));
System.out.printf("%" + SPACE + "d is a prime &n", isPrime(i));
}
}

错误消息:

Exception in thread "main" java.util.IllegalFormatConversionException: d != java.lang.Boolean
at java.util.Formatter$FormatSpecifier.failConversion(Formatter.java:4302)
at java.util.Formatter$FormatSpecifier.printInteger(Formatter.java:2793)
at java.util.Formatter$FormatSpecifier.print(Formatter.java:2747)
at java.util.Formatter.format(Formatter.java:2520)
at java.io.PrintStream.format(PrintStream.java:970)
at java.io.PrintStream.printf(PrintStream.java:871)
at Grp17_ueb01.main(Grp17_ueb01.java:164)
C:\Users\rasmu\Documents\NetBeansProjects\ueb01\nbproject\build-impl.xml:1040: The following error occurred while executing this line:
C:\Users\rasmu\Documents\NetBeansProjects\ueb01\nbproject\build-impl.xml:805: Java returned: 1
BUILD FAILED (total time: 1 second)

最佳答案

我认为您误解了printf第二个参数的含义。这里字符串中的 d 应该替换为小数,作为第二个参数给出。并且 boolean 值 isRepDigit(i) 无法转换为十进制。

可以找到 printf 方法文档 here .

格式字符串语法解释here .

我认为你想要的是:

    if (isRepDigit(i)) {
System.out.printf("%" + SPACE + "d is a repdigit \n", i);
}
if (isPrime(i)) {
System.out.printf("%" + SPACE + "d is a prime \n", i);
}

关于java - 查找 primeNumber 和repDigit 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47311520/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com