2016-10-31 3 views
0

Я новичок в java, и я написал этот метод для ввода строкового слова и вывода слова, записанного назад. Цель состоит в том, чтобы создать метод и не использовать уже существующий метод, такой как простой обратный. Пожалуйста, помогите мне указать, как это сделать, чтобы обратить вспять слово. Я также пытаюсь определить/подсчитать, есть ли палиндромы. Пожалуйста помоги! Я читал другие вопросы, и я не могу найти что-либо достаточно конкретное для моего дела. Я знаю, что мой код не запускается, хотя я не уверен, как его исправить, чтобы получить правильный результат.Метод записи, который использует слово backwords и идентифицирует количество палиндромов

Примером может служить слово «назад», чтобы перейти к «sdrawkcab».

public static int reverseWord(String word) { 
    int palindromes = 0; 

    for (int i = word.length(); i >= 0; i--) { 
     System.out.print(i); 
     word.equalsIgnoreCase(); 
       if (word.charAt(i)) == index(word.charAt(0 && 1))) { 
        palindromes++ 
          System.out.println(palindromes) 
       } 

    return i; 
    } 
    } 

ответ

0

Есть несколько проблем с кодом.

1. Прототип equalsIgnoreCase является

public boolean equalsIgnoreCase(String str); 

Так что этот метод ожидать строка будет принят, но ваш не не пропуская ничего here.To это исправить, передать другую строку, с которой вы хотите, чтобы соответствовать вашему слово как это ..

word.equalsIgnoreCase("myAnotherString"); 

2. word.charAt(i); Пусть слово = "QWERTY", поэтому индексация каждого символа Wi буду как этот

/* q w e r t y 
     0 1 2 3 4 5 */ 

Итак, когда вы используете i = word.length(); я буду 6, так как слово длины 6.So word.charAt(i) будет искать символ с индексом 6, но так как не существует индекс 6, он возвращает исключение ArrayIndexOutOfBound. Чтобы исправить это, запустите i from word.length()-1.

3. if (word.charAt(i)); This extra ") ".Remove it.

Is Index() ваш собственный метод ?. Если да, то также проверьте это.

0

ниже код печатает реверс строки ввода и проверки, если это палиндром

public static void main(String[] args) { 
     String input = "dad"; 
     char temp[] = input.toCharArray();//converting it to a array so that each character can be compared to the original string 
     char output[] = new char[temp.length];//taking another array of the same size as the input string 
     for (int i = temp.length - 1, j = 0; i >= 0; i--, j++) {//i variable for iterating through the input string and j variable for inserting data into output string. 
      System.out.print(temp[i]);//printing each variable of the input string in reverse order. 
      output[j] = temp[i];//inserting data into output string 
     } 
     System.out.println(String.valueOf(output)); 
     if (String.valueOf(output).equalsIgnoreCase(input)) {//comparing the output string with the input string for palindrome check 
      System.out.println("palindrome"); 
     } 
} 
0

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

public static boolean printWordAndCheckIfPalindrome(final String word) { 
    // Create a StringBuilder which helps when building a string 
    final StringBuilder reversedWordBuilder = new StringBuilder(""); 
    // Get a stream of the character values of the word 
    word.chars() 
      // Add each character to the beginning of the reversed word, 
      // example for "backwards": "b", "ab", "cab", "kcab", ... 
      .forEach(characterOfString -> reversedWordBuilder.insert(0, (char) characterOfString)); 
    // Generate a String out of the contents of the StringBuilder 
    final String reversedWord = reversedWordBuilder.toString(); 
    // print the reversed word 
    System.out.println(reversedWord); 
    // if the reversed word equals the given word it is a palindrome 
    return word.equals(reversedWord); 
} 
Смежные вопросы