java中的回文数

java中的回文数,java,Java,我是java新手,我想知道如何在不使用字符串和仅使用方法的情况下打印素回文 这就是我目前所拥有的。我想在50之前打印出每个质数回文数。我只对素数做了这项工作,但当我添加回文时,它不起作用 编辑:我添加了int original=数字,就像其中一个答案所说的那样,但我的输出总是2,3,5,7,11,仅此而已 EDIT2(还有一个问题):我将值改为1000,输出为2357113535373838383727757879797919929。输出是正确的,但101、131、151、181、191不也是素

我是java新手,我想知道如何在不使用字符串和仅使用方法的情况下打印素回文

这就是我目前所拥有的。我想在50之前打印出每个质数回文数。我只对素数做了这项工作,但当我添加回文时,它不起作用

编辑:我添加了int original=数字,就像其中一个答案所说的那样,但我的输出总是2,3,5,7,11,仅此而已

EDIT2(还有一个问题):我将值改为1000,输出为2357113535373838383727757879797919929。输出是正确的,但101、131、151、181、191不也是素数回文数吗?为什么它们不包括在输出中

public class primePalindrome {
public static void main (String[] args) {
    Scanner input = new Scanner(System.in);
    System.out.println("Enter a number");
    int num = input.nextInt();
    System.out.println("The prime palindrome numbers are \n");
    printPP(num);
}

public static void printPP(int numberOfPP) {
    final int NUMBER_OF_PP_PER_LINE = 10;
    int count = 0;
    int number = 2;

    while (number < numberOfPP) {
        if(isPrime(number) && isPalindrome(number)) {
            count++;

            if (count % NUMBER_OF_PP_PER_LINE ==0) {
                System.out.printf("%-5s\n", number);
            }
            else
                System.out.printf("%-5s", number);
        }
        number++;
    }
}

public static boolean isPrime(int number) {
    for (int divisor = 2; divisor <= number / 2; divisor++) {
        if (number % divisor == 0) {
            return false;
        }
    }
    return true;
}

public static boolean isPalindrome(int number) {
    int reverse = 0;
    int n = number;
    for (int i = 0; i <= number; i++) {
        int remain = number%10;
        number = number/10;
        reverse = reverse*10+remain;
    }
    if (reverse == n) {
        return true;
    }
}
        return false;

}
公共类primePalindrome{
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(System.in);
System.out.println(“输入一个数字”);
int num=input.nextInt();
System.out.println(“素数回文数为\n”);
printp(num);
}
公共静态无效打印PP(int numberOfPP){
每行的最终整数=10;
整数计数=0;
整数=2;
while(数字对于(int-divisor=2;divisor,您很接近。最后您将数字与反向进行比较。不幸的是,数字已被修改。您需要将数字的原始值与反向进行比较。这是我修改的版本:

public static boolean isPalindrome(int number) {
    int original = number;
    int reverse = 0;
    for (int i = 0; i <= number; i++) {
        int remain = number % 10;
        number = number / 10;
        reverse = reverse * 10 + remain;
    }
    return reverse == original;
}
public静态布尔值isAlindrome(整数){
int原始=数字;
int反向=0;

对于(int i=0;i您很接近。最后您将数字与反向进行比较。不幸的是,数字已被修改。您需要将数字的原始值与反向进行比较。以下是我的修改版本:

public static boolean isPalindrome(int number) {
    int original = number;
    int reverse = 0;
    for (int i = 0; i <= number; i++) {
        int remain = number % 10;
        number = number / 10;
        reverse = reverse * 10 + remain;
    }
    return reverse == original;
}
public静态布尔值isAlindrome(整数){
int原始=数字;
int反向=0;

对于(inti=0;i,只有一个2位素数回文:11。每隔2位数可被11整除。因此,您的输出是正确的

您的isPalindrome非常接近: 1) 将相等检查移到循环外部 2) 使用while循环。使用“for”会导致忽略回文模式1X1、2XX2等。 3) 别忘了保留论点:

public static boolean isPalindrome(int number) {
    int original = number;
    int reverse = 0;
    while (number > 0) {
        int digit = number%10;
        number = number/10;
        reverse = reverse*10+remain;
    }
    return reverse == original;
}

只有一个2位素数回文:11。每隔2位数可被11整除。因此,您的输出是正确的

您的isPalindrome非常接近: 1) 将相等检查移到循环外部 2) 使用while循环。使用“for”会导致忽略回文模式1X1、2XX2等。 3) 别忘了保留论点:

public static boolean isPalindrome(int number) {
    int original = number;
    int reverse = 0;
    while (number > 0) {
        int digit = number%10;
        number = number/10;
        reverse = reverse*10+remain;
    }
    return reverse == original;
}

因为上面的大多数答案不适用于正数和负数,下面的答案也适用于负数

private static boolean isPalindrome(int n) {
    int orignal = n, reversed = 0;
    while (n != 0) {
        reversed = (reversed * 10) + (n % 10);
        n /= 10;
    }
    return reversed == orignal;
}

因为上面的大多数答案不适用于正数和负数,下面的答案也适用于负数

private static boolean isPalindrome(int n) {
    int orignal = n, reversed = 0;
    while (n != 0) {
        reversed = (reversed * 10) + (n % 10);
        n /= 10;
    }
    return reversed == orignal;
}

如果给定的输入是一个巨大的数字或字符串怎么办

我相信下面的代码应该适用于任何输入

private boolean isPalindrome(String s) {
    int lo = 0, hi = s.length()-1;
    while(lo < hi) {
        if(s.charAt(lo) == s.charAt(hi)) {
           lo++; hi--;
        } else {
            return false;
        }
    }
    return true;
}
private boolean isPalindrome(字符串s){
int-lo=0,hi=s.length()-1;
while(lo
如果给定的输入是一个巨大的数字或字符串怎么办

我相信下面的代码应该适用于任何输入

private boolean isPalindrome(String s) {
    int lo = 0, hi = s.length()-1;
    while(lo < hi) {
        if(s.charAt(lo) == s.charAt(hi)) {
           lo++; hi--;
        } else {
            return false;
        }
    }
    return true;
}
private boolean isPalindrome(字符串s){
int-lo=0,hi=s.length()-1;
while(lo
}

}
导入java.util.*;
公共类触犯
{
公共布尔素数(int n)
{
int c=0;
对于(inti=1;i
importjava.util.*;
公共类触犯
{
公共布尔素数(int n)
{
int c=0;

对于(inti=1;i这很容易理解

public class StringDemo {

 public static void main(String args[]) {
  if(palindrome("1211")){
      System.out.println("Yes IT IS palindrome");
  }
  if(palindrome("121")){
      System.out.println("Yes IT IS palindrome");
  }
  }
  public static boolean palindrome(Object o){
   String s=(String)o;
   boolean result=true;
   int temp=s.length()-1;
   for(int c=0;c<temp;c++){
       if(s.charAt(c)==s.charAt(temp)){
           temp--;
           //System.out.println("Pallidrom start "+ s.charAt(c));
           //System.out.println("Pallidrom end "+ s.charAt(temp));
       }else{
           System.out.println("NOT palindrome");
           return false;
       }
    }
    return result;
 }
}
公共类StringDemo{
公共静态void main(字符串参数[]){
if(回文(“1211”)){
System.out.println(“是的,它是回文的”);
}
if(回文(“121”)){
System.out.println(“是的,它是回文的”);
}
}
公共静态布尔回文(对象o){
字符串s=(字符串)o;
布尔结果=真;
int temp=s.length()-1;

对于(int c=0;c这很容易理解

public class StringDemo {

 public static void main(String args[]) {
  if(palindrome("1211")){
      System.out.println("Yes IT IS palindrome");
  }
  if(palindrome("121")){
      System.out.println("Yes IT IS palindrome");
  }
  }
  public static boolean palindrome(Object o){
   String s=(String)o;
   boolean result=true;
   int temp=s.length()-1;
   for(int c=0;c<temp;c++){
       if(s.charAt(c)==s.charAt(temp)){
           temp--;
           //System.out.println("Pallidrom start "+ s.charAt(c));
           //System.out.println("Pallidrom end "+ s.charAt(temp));
       }else{
           System.out.println("NOT palindrome");
           return false;
       }
    }
    return result;
 }
}
公共类StringDemo{
公共静态void main(字符串参数[]){
if(回文(“1211”)){
System.out.println(“是的,它是回文的”);
}
if(回文(“121”)){
System.out.println(“是的,它是回文的”);
}
}
公共静态布尔回文(对象o){
字符串s=(字符串)o;
布尔结果=真;
int temp=s.length()-1;

对于(int c=0;cHOW)它不起作用了吗?意外结果(您得到了什么结果?)?编译错误(哪些错误)?更具体一点。它是如何起作用的?意外结果(您得到了什么结果?)?编译错误(哪些错误)?更具体一些。此处的更多信息:此处的更多信息:无法对问题进行评论,请在此处进行评论。请编辑您的问题,以包含您实际运行以获取“2 3 5 7 11 313…”的代码。很难说程序在没有源代码的情况下为何会出现错误:)无法对此问题进行评论,请在此处进行评论。请编辑您的问题,以包含您实际运行以获取“2 3 5 7 11 313…”的代码。如果没有源代码,很难说程序为何会出现错误:)欢迎使用StackOverflow。通常认为,解释您的答案如何解决原始海报的问题是有帮助的。此外,请检查您的格式,因为并非所有代码都被格式化为代码,所以很难阅读。欢迎使用StackOverflow。一般认为