java中的数字比较

java中的数字比较,java,Java,这可能是一个非常愚蠢的问题。我试图反转输入的数字并进行比较。如果它们是相同的,那么输出应该是“输入的数字是回文”,但是,对于每个数字,我都会像回文一样输出 package com.practise.examples; import java.util.Scanner; public class Practise { public static void main(String[] args) { Scanner s=new Scanner(System.in);

这可能是一个非常愚蠢的问题。我试图反转输入的数字并进行比较。如果它们是相同的,那么输出应该是“输入的数字是回文”,但是,对于每个数字,我都会像回文一样输出

package com.practise.examples;

import java.util.Scanner;

public class Practise 
{
    public static void main(String[] args) {


        Scanner s=new Scanner(System.in);
        System.out.println("enter the number to reverse it:\n");
        int num=s.nextInt();
        int revNum=0;

        while(num!=0)
        {
            revNum=revNum *10;
            revNum= revNum+ num%10;
            num=num/10;
        }
        System.out.println("the reverse of the number is: " +revNum);

            if(revNum==num)
            {
                System.out.println("the number is a palindrome" );

            }
            else
            {
                System.out.println("the number entered is not a palindrome");

            }

        }
    }
更简单的方法:

String num=Integer.toString(s.nextInt());
String revNum = new StringBuffer(num).reverse().toString();
System.out.println("the reverse of the number is: " +revNum);

if(revNum.equals(num))
    System.out.println("the number is a palindrome" );
else
    System.out.println("the number entered is not a palindrome");
如果你坚持你的方法:

    Scanner s=new Scanner(System.in);
    System.out.println("enter the number to reverse it:\n");
    int num=s.nextInt();
    int original = num;
    int revNum=0;

    while(num!=0)
    {
        revNum=revNum *10;
        revNum= revNum+ num%10;
        num=num/10;
    }
    System.out.println("the reverse of the number is: " +revNum);

        if(revNum==original)
        {
            System.out.println("the number is a palindrome" );

        }
        else
        {
            System.out.println("the number entered is not a palindrome");

        }

    }
更简单的方法:

String num=Integer.toString(s.nextInt());
String revNum = new StringBuffer(num).reverse().toString();
System.out.println("the reverse of the number is: " +revNum);

if(revNum.equals(num))
    System.out.println("the number is a palindrome" );
else
    System.out.println("the number entered is not a palindrome");
如果你坚持你的方法:

    Scanner s=new Scanner(System.in);
    System.out.println("enter the number to reverse it:\n");
    int num=s.nextInt();
    int original = num;
    int revNum=0;

    while(num!=0)
    {
        revNum=revNum *10;
        revNum= revNum+ num%10;
        num=num/10;
    }
    System.out.println("the reverse of the number is: " +revNum);

        if(revNum==original)
        {
            System.out.println("the number is a palindrome" );

        }
        else
        {
            System.out.println("the number entered is not a palindrome");

        }

    }

您已经修改了num以获得相反的结果,然后使用相同的num进行比较。使用临时变量。

您已经修改了num以获得相反的结果,然后使用相同的num进行比较。使用临时变量。

尝试以下方法:

public static int reverse(int num)
{
  try
  {
    return Integer.parseInt(new StringBuilder(String.valueOf(num)).reverse().toString());
  }
  catch (Exception ex)
  {
    // Should not happen...
  }
}

试着这样做:

public static int reverse(int num)
{
  try
  {
    return Integer.parseInt(new StringBuilder(String.valueOf(num)).reverse().toString());
  }
  catch (Exception ex)
  {
    // Should not happen...
  }
}

您的想法似乎只适用于非常特定的实例,而代码本身。。。好吧,我给你一个不同的想法

创建堆栈和队列

获取原始输入,并将每个连续项添加到堆栈和队列的每个元素中

一旦队列和堆栈已满

iterate until length=0
if stack.pop != queue.dequeue
    palindrome=false

您的想法似乎只适用于非常特定的实例,而代码本身。。。好吧,我给你一个不同的想法

创建堆栈和队列

获取原始输入,并将每个连续项添加到堆栈和队列的每个元素中

一旦队列和堆栈已满

iterate until length=0
if stack.pop != queue.dequeue
    palindrome=false

你可以把你的号码转换成一个字符串,然后检查doe的回文

import java.util.Scanner;

public class Main{
    public static void main(String[] args) {
        Scanner s=new Scanner(System.in);
        System.out.println("enter the number to reverse it:\n");
        int num=s.nextInt();
        if (isPalindrome(num+"")){
            System.out.println("the number is a palindrome" );
        }else{
            System.out.println("the number entered is not a palindrome");
        }
    }
    public static boolean isPalindrome(String s) {
        int n = s.length();
        for (int i = 0; i < (n/2); ++i) {
            if (s.charAt(i) != s.charAt(n - i - 1)) {
                return false;
            }
        }

        return true;
    }
}
import java.util.Scanner;
公共班机{
公共静态void main(字符串[]args){
扫描仪s=新的扫描仪(System.in);
System.out.println(“输入编号以将其反转:\n”);
int num=s.nextInt();
if(isAlindrome(num+“”){
System.out.println(“数字是回文”);
}否则{
System.out.println(“输入的数字不是回文”);
}
}
公共静态布尔值isAlindrome(字符串s){
int n=s.长度();
对于(int i=0;i<(n/2);+i){
如果(s.charAt(i)!=s.charAt(n-i-1)){
返回false;
}
}
返回true;
}
}

您可以将您的号码转换为字符串,然后检查doe的回文

import java.util.Scanner;

public class Main{
    public static void main(String[] args) {
        Scanner s=new Scanner(System.in);
        System.out.println("enter the number to reverse it:\n");
        int num=s.nextInt();
        if (isPalindrome(num+"")){
            System.out.println("the number is a palindrome" );
        }else{
            System.out.println("the number entered is not a palindrome");
        }
    }
    public static boolean isPalindrome(String s) {
        int n = s.length();
        for (int i = 0; i < (n/2); ++i) {
            if (s.charAt(i) != s.charAt(n - i - 1)) {
                return false;
            }
        }

        return true;
    }
}
import java.util.Scanner;
公共班机{
公共静态void main(字符串[]args){
扫描仪s=新的扫描仪(System.in);
System.out.println(“输入编号以将其反转:\n”);
int num=s.nextInt();
if(isAlindrome(num+“”){
System.out.println(“数字是回文”);
}否则{
System.out.println(“输入的数字不是回文”);
}
}
公共静态布尔值isAlindrome(字符串s){
int n=s.长度();
对于(int i=0;i<(n/2);+i){
如果(s.charAt(i)!=s.charAt(n-i-1)){
返回false;
}
}
返回true;
}
}

请注意,您正在销毁
num
,因此在比较
revNum==num
时,您不应更改
num
创建反向编号时,否则,您将丢失原始编号。如果原始编号不断更改,则很难将原始编号与反转编号进行比较。请注意,您正在销毁此处的
num
,因此当您比较
revNum==num
时,
num==0
。创建反转编号时不应更改
num
,否则,您将丢失原始编号。如果原始编号不断变化,则很难将原始编号与反向编号进行比较。