import java.utils.Scanner;
public class PD {
public static void main(String[] args) {
System.out.print("Enter your number: " );
int number = input.nextInt();
System.out.println( DPPP(number) + "is double palidromic prime");
}
// main method checks every other method and returns a value that follows everything
public static int DPPP( int number) {
int count = 2;
while (count < number) {
String blank = "";
String Snumber = count + blank;
if (isPalindromic(count) && isPrime(count) &&
isPalindromic(Snumber.length()) && isPrime(Snumber.length()))
return count;
count++;
}
}
// method to find palindromic
public static boolean isPalindromic(int number) {
String blank = "";
String convert = count + blank;
for (int i = 0, int q = 1; i <= (convert.length()/2 - 1); i++, q++) {
if (convert.substring(i,q) == number.substring(number.length() - q, number.length() - i))
return true;
else
return false;
}
}
// method to find prime
public static boolean isPrime(int number) {
for (int divisor = 2; divisor <= number/2; divisor++) {
if (number % divisor == 0) {
return false;
}
}
return true;
}
}
错误:
PD.java:28: <identifier> expected
for (int i = 0, int q = 1; i <= (convert.length()/2 - 1); i++, q++) {
^
PD.java:28: not a statement
for (int i = 0, int q = 1; i <= (convert.length()/2 - 1); i++, q++) {
^
PD.java:28: ')' expected
for (int i = 0, int q = 1; i <= (convert.length()/2 - 1); i++, q++) {
^
PD.java:28: ';' expected
for (int i = 0, int q = 1; i <= (convert.length()/2 - 1); i++, q++) {
^
PD.java:28: ';' expected
for (int i = 0, int q = 1; i <= (convert.length()/2 - 1); i++, q++) {
而且我不确定为什么要求放置一个;为什么它说这不是一个声明
总的来说,我得到了这个错误,我不明白为什么。 感谢您的帮助!我知道我的程序可能不正确,但我真的想专注于修复此错误。再次感谢您的帮助和时间。
答案 0 :(得分:2)
问题似乎是在一个语句中有两个类型标识符(例如int i,int j;)。当您使用相同的语句声明两个变量时,它们被隐式赋予相同的类型,因此应该更改为:
for (int i = 0, q = 1; i <= (convert.length()/2 - 1); i++, q++) {
另一种选择是在循环中从i计算q:
for (int i = 0; i <= (convert.length()/2 - 1); i++) {
int q = i+1;
...
}
答案 1 :(得分:1)
将初始化程序更改为:int i = 0, q = 1
答案 2 :(得分:0)
试试这个
for (int i = 0,; i <= (convert.length()/2 - 1); i++) {
if (convert.substring(i,i + 1) == number.substring(number.length() - i + 1, number.length() - i))
答案 3 :(得分:0)
我对你的for循环有一个评论,在停止条件下从不考虑q,因此在我看来把它放在循环中更合乎逻辑。
我把你的循环变成了这个:
int q = 1;
for (int i = 0; i <= (convert.length()/2 - 1); i++) {
// code within the loop
q++;
}
希望它对你有所帮助。