2015-11-19 2 views
-2

В настоящее время я пытаюсь сделать проверку Palindrome Checker, используя серию чистых и грязных массивов, и пока я их собирал, но у меня возникают проблемы с получением кода для определения фактического palindromesПалиндромы и массивы, усилия в расстройстве

Ниже приведен код, и любая помощь была бы очень признательна.

import java.io.*; 
import java.util.Scanner; 
public class palindrome 
{ 
    public static void main (String[] args) throws IOException 
    { 
     File inputFile = new File ("Palindromes.txt"); 

     Scanner inputScan = new Scanner (inputFile); 

     String [] dirty = new String [20]; 

     int i = 0; 

     while (inputScan.hasNext()) 
     { 
      dirty[i] = inputScan.nextLine(); 
      System.out.println(dirty[i]); 
      i++; 
     } 
     inputScan.close(); 
     String [] clean = new String [i]; 
     String reverse =""; 
     for (int x = 0; x < clean.length; x++) 
     { 
      clean[x] = ""; 
      for (int z = length; z < dirty[x].length(); z--) 
      {    
       char test = dirty[x].charAt(z); 
       if (Character.isLetterOrDigit(test)) 
       { 
        test = Character.toLowerCase(test); 
        clean [x] += test; 
        if (clean[x].equals(clean[z])) 
        { 
         System.out.println(clean[z] +" is a palindrome"); 
        } else 
        { 
         System.out.println(clean[z] +" is NOT a palindrome"); 
        } 
       } 
      } 
     } 
     for (int j = 0; j < clean.length; j++) 
     { 
      System.out.println(clean[j]); 
     } 
    } 
+3

Напишите метод проверки палиндромного свойства. И ваш нынешний подход кажется странным. –

ответ

1

Вы пытаетесь сделать что-то подобное?

import java.io.File; 
import java.io.IOException; 
import java.util.Scanner; 

public class Palindrome { 

    public static boolean isPalindrome(String s) { 
     s = s.toLowerCase().replaceAll("[\\s\\p{Punct}]", ""); 
     int len = s.length(), mid = len/2; 
     for (int x = 0; x < mid; x++) 
      if (s.charAt(x) != s.charAt(len - x - 1)) 
       return false; 
     return true; 
    } 

    public static void main(String[] args) throws IOException { 
     File inputFile = new File("Palindromes.txt"); 
     try (Scanner scanner = new Scanner(inputFile)) { 
      while (scanner.hasNextLine()) { 
       String s = scanner.nextLine(); 
       if (isPalindrome(s)) { 
        System.out.println(s + " is a palindrome"); 
       } else { 
        System.out.println(s + " is NOT a palindrome"); 
       } 
      } 
     } 
    } 
} 
+0

Да, это то, что я ищу, однако мне необходимо отделить входной файл в два отдельных массива; один «грязный» массив, который просто считывает код из файла, как есть, и один «чистый» массив, который удаляет любые знаки пунктуации, расстояния и чувствительности к регистру. есть ли способ реализовать эти массивы в этом коде? –

+0

@MaxGrant Я отредактировал ответ, чтобы удалить все знаки препинания, интервала и чувствительность к регистру из строк. –

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