2016-10-17 1 views
0

Я довольно новичок в 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) && (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%10; 
     rev = rev*10 + rmd; 
     n = n/10; 
    } if (rev==n) { 
     return true; 
    } else { 
     return false; 
    } 
} 

}

+0

Я думаю, что [это] (https://ericlippert.com/2014/03/05/how-to-debug-small-programs/) поможет вам – UKMonkey

+0

для нет 23, что должно выводиться? – Pirate

ответ

0

Ваш метод палиндром возвращает неправильный результат. Вы изменяете n и после этого сравниваете с обратным номером.

Сначала сохраните это значение затем сравнить через некоторое время цикла

int number = n; 
If(rev == number) return true; 
+0

Спасибо за разъяснение! – bob

0

Вы спутать в своей pal() функции. Ваша переменная n получает 0, и вы сравниваете ее с обратным номером.

Назначьте эту переменную переменной 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) && 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%10; 
       rev = rev*10 + rmd; 
       n = n/10; 
      } 
     if (rev==temp){ 
       return true; 
      }else{ 
       return false; 
      } 
    } 
} 

Выход:

enter image description here

+0

Отлично, спасибо! – bob

+0

принимайте это как ответ. Благодарю. – Pirate

Смежные вопросы