#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");
}
}