Member 12995767 Ответов: 2

Даже если я ввожу палиндром, он не печатает, что это палиндром. Может кто-нибудь, пожалуйста, сказать мне, что случилось?


/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package programmingbasics1;
import java.util.Scanner;

/**
 *
 * @author Vedha
 */
public class Palindrome {
    public static void main(String args[])
    {
        Scanner sc=new Scanner(System.in);
        int arr[]=new int[5];
        int arr_new[]=new int[5];
        for(int i=0;i<5;i++)
        {
            System.out.print("Enter array integer at "+i+": ");
            arr[i]=sc.nextInt();
        }
        
        for(int i=0,j=4;i<5&&j>=0;i++,j--)
        {
            arr_new[i]=arr[j];
        }
        System.out.print("Old array: ");
        for(int k=0;k<5;k++)
            System.out.print(arr[k]+" ");
        System.out.println();
        System.out.print("New array: ");
        for(int k=0;k<5;k++)
            System.out.print(arr_new[k]+" ");
        System.out.println();
        
        if(arr==arr_new)
           System.out.print(" It is a Palindrome");
        else
            System.out.print("It is not a Palindrome");
    }
    
}


Что я уже пробовал:

Я опубликовал свой код, я не могу найти ошибку в этом.

2 Ответов

Рейтинг:
2

Patrice T

Этот

if(arr==arr_new)

это не то, как сравнить содержание 2 массивов.
Это верно только в том случае, если оба массива имеют один и тот же адрес в памяти.
Вы должны вручную сравнить каждый элемент.


Рейтинг:
1

Peter Leow

Массивы являются объектами в Java, когда вы используете

==
вы ищете один и тот же экземпляр объекта с разными именами, которые указывают на одну и ту же ячейку памяти. Чтобы сравнить равенство всех элементов в двух объектах (в данном случае массивах), необходимо использовать
equals
. Изменить это
if(arr==arr_new)
к
if(Arrays.equals(arr, arr_new))