Почему мой оператор return не выводит строку?

#java #return #palindrome

#java #Возврат #палиндром

Вопрос:

Я пытаюсь попросить пользователя ввести некоторый текст и распечатать, является ли этот текст палиндромом, и выяснил, как это сделать без нескольких классов, но я немного запутался в том, как это сделать с несколькими заданными классами (этого требует назначение). Кроме того, я ученик средней школы на вводном занятии, так что потерпите меня.

Мой оператор return продолжает выдавать мне ошибку: несовместимые типы: строка не может быть преобразована в логическое значение.

 import java.util.Scanner;
public class Palindromes
{
    /**
     * This program lets the user input some text and
     * prints out whether or not that text is a palindrome.
     */
     
    public static void main(String[] args)
    {
       // Create user input and let user know whether their word is a palindrome or not! 
        String text="";
        System.out.println("Type in your text:");
        Scanner input = new Scanner(System.in);
        text = input.nextLine();
    
    }
    
    /**
     * This method determines if a String is a palindrome,
     * which means it is the same forwards and backwards.
     * 
     * @param text The text we want to determine if it is a palindrome.
     * @return A boolean of whether or not it was a palindrome.
     */
    public static boolean isPalindrome(String text)
    {
         String newString= "";
         if (newString.equals(text)){
        System.out.println("It's a palindrome!");
    //return true;
    }
    else{
        System.out.println("It's not a palindrome");
    }
    return newString;
    }
    
    /**
     * This method reverses a String.
     * 
     * @param text The string to reverse.
     * @return The new reversed String.
     */
    public static String reverse(String text)
    {
        String newString="";
       for(int i = text.length() - 1; i >= 0; i--)
        {
            String character = text.substring(i, i 1);
            newString  = character;
        }
        System.out.println("The original string reversed = "  newString);
    }
        
}
 

Комментарии:

1. isPalindrome не должен выполнять печать — main должен быть, исходя из результата isPalindrome .

Ответ №1:

Вы объявляете isPalindrome с типом возвращаемого значения boolean … вам нужно установить для него значение String для возвращаемых строк.

     public static String isPalindrome(String text)
    {
         String newString= "";
         if (newString.equals(text)){
        System.out.println("It's a palindrome!");
    //return true;
    }
    else{
        System.out.println("It's not a palindrome");
    }
    return newString;
    }
 

Ответ №2:

В вашем коде есть несколько ошибок. Во-первых, вы предполагаете, что методы автоматически вызываются при объявлении. Во-вторых, ваш код не возвращает назначенные вами типы. Давайте начнем с reverse . Этот метод должен просто перевернуть ввод text (и вернуть перевернутый текст). Вы могли бы сделать это несколькими способами. Например,

 public static String reverse(String text) {
    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < text.length(); i  ) {
        sb.insert(0, text.charAt(i));
    }
    return sb.toString();
}
 

Во-вторых, чтобы определить, является ли text это палиндромом, вы можете сравнить обратное text с оригиналом text . Нравится,

 public static boolean isPalindrome(String text) {
    String newString = reverse(text);
    return newString.equals(text);
}
 

Затем ваш main метод используется isPalindrome для определения, является ли ввод палиндромом. Нравится,

 public static void main(String[] args) {
    System.out.println("Type in your text:");
    Scanner input = new Scanner(System.in);
    String text = input.nextLine();
    if (isPalindrome(text)) {
        System.out.println("It's a palindrome!");
    } else {
        System.out.println("It's not a palindrome");
    }
}