#integer #compare #output #palindrome
#целое число #Сравнить #вывод #палиндром
Вопрос:
Я довольно новичок в Java. У меня есть код, в котором использование вводит число, а программа проверяет каждое число от 1 до n и выводит каждое число, которое является как простым числом, так и палиндромом. Однако мой код по какой-то причине ничего не выводит. В коде нет ошибок, поэтому я не уверен, что именно не так. Вот мой код:
import java.util.*;
public class Lab5
{
public static void main (String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("Enter a value:"); //Asking the user to input the value n
int n =scanner.nextInt();
for (int y=2; y<=n; y ) { //For every number from 2 to n
prime(y); //the prime number is checked
pal(y); //and so is the palindrome
if ((prime(y)==true) amp;amp; (pal(y)==true)) { //if a number is both a prime AND a palindrome (both methods are being compared here)
System.out.println(y); //it is printed out
}
}
}
public static boolean prime(int n) { //the method for finding the prime number
int x = 2;
while (n%x>0) {
x =1;
} if (x==n) {
return true;
} else {
return false;
}
}
public static boolean pal(int n) { //the method for finding a palindrome
int rev = 0;
int rmd = 0;
while (n>0) {
rmd = n;
rev = rev*10 rmd;
n = n/10;
} if (rev==n) {
return true;
} else {
return false;
}
}
}
Комментарии:
1. Я думаю, это поможет вам
2. для № 23, что должно быть выведено?
Ответ №1:
Ваш метод палиндрома возвращает неверный результат. Вы изменяете n
, а затем сравниваете с обратным числом.
Сначала сохраните это значение, а затем сравните после цикла while
int number = n;
If(rev == number) return true;
Комментарии:
1. Спасибо за разъяснение!
Ответ №2:
Вы ошибаетесь в своей pal()
функции. Ваша переменная n получает значение 0, и вы сравниваете ее с обратным значением no.
Присвойте эту переменную temp
переменной, а затем сравните. Я внес некоторые изменения в ваш код, и он отлично работает.
import java.util.*;
public class A
{
public static void main (String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("Enter a value:"); //Asking the user to input the value n
int n =scanner.nextInt();
for(int i=2;i<=n;i ){
if (prime(i) amp;amp; pal(i)) { //if a number is both a prime AND a palindrome (both methods are being compared here)
System.out.println(i); //it is printed out
}
}
}
public static boolean prime(int n) { //the method for finding the prime number
int x = 2;
while (n%x>0) {
x =1;
} if (x==n) {
return true;
} else {
return false;
}
}
public static boolean pal(int n) { //the method for finding a palindrome
int rev = 0;
int rmd = 0;
int temp = n;
while (n>0) {
rmd = n;
rev = rev*10 rmd;
n = n/10;
}
if (rev==temp){
return true;
}else{
return false;
}
}
}
Вывод :