Java 尝试使用整数数组求解回文

Java 尝试使用整数数组求解回文,java,arrays,palindrome,Java,Arrays,Palindrome,我正在编写一个程序,可以帮助我找到输入的数字是否是回文,但我正在尝试使用数组。我想知道这是否可能??如果可能的话,我做错了什么 我已经在我认为问题所在的地方标记了代码,但请随意提出任何建议 谢谢 import java.util.Scanner; public class palindrome { public static void main(String args[]) { int size = 10,i,j,flag=0; int num[] = new int[s

我正在编写一个程序,可以帮助我找到输入的数字是否是回文,但我正在尝试使用数组。我想知道这是否可能??如果可能的话,我做错了什么

我已经在我认为问题所在的地方标记了代码,但请随意提出任何建议

谢谢

import java.util.Scanner;


public class palindrome
{
 public static void main(String args[])
 {
    int size = 10,i,j,flag=0;
    int num[] = new int[size];

    Scanner sc = new Scanner(System.in);
        System.out.println("Enter the size of the number ");
            size = sc.nextInt();
            System.out.println("Enter the number ");
    for(i=0;i<size;i++)
    {
        num[i]=sc.nextInt();
    }
    i=size-1;
    for(j=0;j<(size/2);j++,i--)
    {
        if(i>(size/2))
        {
                        if(num[i]==num[j])   
            {
                flag = 1;
            }
        }
    }
    if(flag==1)
    {
        System.out.println("The number is a palindrome");

    }
    else
        System.out.println("The number is not a palindrome ");
 }
} 
import java.util.Scanner;
公共类回文
{
公共静态void main(字符串参数[])
{
int size=10,i,j,flag=0;
int num[]=新的int[size];
扫描仪sc=新的扫描仪(System.in);
System.out.println(“输入数字的大小”);
尺寸=sc.nextInt();
System.out.println(“输入编号”);
对于(i=0;iTry

public boolean isPalindrome(int[]num){
对于(int i=0;i
是的,这是可能的,而且,可以使用
ArrayList
String
-任何您喜欢的方法。为了写下正确的实现,首先分解您当前的解决方案:

现在,让我们实现
isAlindrome()

private静态布尔值isAlindrome(int[]值){
if(null==值)
返回true;//TODO:或false,或引发异常
对于(int i=0;i
您的班级有几个问题:

  • 首先,你没有检查一个数字是否是回文。你的算法有缺陷
  • 第二,您要求输入一个大小,但最终用户输入它,但您自己不使用它,而是在数字数组中使用引入的值
你应该这样做

public class Palindrome {

  private static boolean isPalindrome(int[] array) {
    for (int i = 0, j = array.length-1; i < j; i++, j--) {
      if (array[i] != array[j]) {
        return false;
      }
    }
    return true;
  }

  public static void main(String args[]) {
    Scanner scanner = new Scanner(System.in);
    System.out.print("How many numbers do you want to enter? ");
    int size = scanner.nextInt();
    int[] numbers = new int[size];
    for (int i = 0; i < size; i++) {
      System.out.printf("Enter number %s: ", i+1);
      numbers[i] = scanner.nextInt();
    }
    if (isPalindrome(numbers)) {
      System.out.println("The number is a palindrome");
    } else {
      System.out.println("The number is not a palindrome");
    }
  }
}
公共类回文{
私有静态布尔isPalindrome(int[]数组){
对于(int i=0,j=array.length-1;i
检查回文的最简单、最直观的方法(imo)是通过递归。其思想很简单:

第一个字符和最后一个字符相同吗?
删除第一个和最后一个字符,并检查新
字符串的第一个和最后一个字符

没有回文。

当输入仅为1
char
时,它就微不足道了

请查看以下代码:

private void isPalindrome(String number){
    if(number.length() == 1){
        System.out.println("yes");
    }else if(number.charAt(0) == number.charAt(number.length()-1)){
        isPalindrome(number.substring(1, number.length()-1));
    }else{
        System.out.println("no");
    }
}
使用以下各项进行测试:

isAlindrome(String.valueOf(232))
返回
“是”

isAlindrome(String.valueOf(23))
返回
“否”


当然,这也同样适用于
数组
s。将参数替换为数组,并以相同的方式搜索索引。减少数组时,只需创建一个新的较小数组,而不包含前一个数组的第一个和最后一个索引。

您的代码当前执行的操作是检查第一个和最后一个数字是否相等al并将其标记为回文。您应该检查它们是否不相等,然后从标记1转到标记0System.out.println(“输入数字的大小”);如果不是System.out.println(“输入数字:”);大小固定为10?非常感谢,伙计..真的你是对的!!!现在我意识到我做错了什么。非常感谢!!!虽然我的问题解决了,但我也会尝试一下..这将增加我的知识。谢谢!!!@Dmitry Bychenko有相同的解决方案,但有更多的用户输入验证和冗长,所以你应该看看他的回复定时往来
  private static boolean isPalindrome(int[] value) {
    if (null == value)
      return true; //TODO: or false, or throw exception

    for (int i = 0; i < value.length / 2; ++i)
      if (value[i] != value[value.length - 1 - i])
        return false;

    return true;
  }
public class Palindrome {

  private static boolean isPalindrome(int[] array) {
    for (int i = 0, j = array.length-1; i < j; i++, j--) {
      if (array[i] != array[j]) {
        return false;
      }
    }
    return true;
  }

  public static void main(String args[]) {
    Scanner scanner = new Scanner(System.in);
    System.out.print("How many numbers do you want to enter? ");
    int size = scanner.nextInt();
    int[] numbers = new int[size];
    for (int i = 0; i < size; i++) {
      System.out.printf("Enter number %s: ", i+1);
      numbers[i] = scanner.nextInt();
    }
    if (isPalindrome(numbers)) {
      System.out.println("The number is a palindrome");
    } else {
      System.out.println("The number is not a palindrome");
    }
  }
}
private void isPalindrome(String number){
    if(number.length() == 1){
        System.out.println("yes");
    }else if(number.charAt(0) == number.charAt(number.length()-1)){
        isPalindrome(number.substring(1, number.length()-1));
    }else{
        System.out.println("no");
    }
}