整数和字符串的回文 Java
Palindrome for Integers and Strings Java
我正在尝试为 Java 中的整数和字符串创建回文应用程序,我的 if 语句有问题,它输出 incorrect/repeating True 和 False 语句:
import java.util.Scanner;
import java.io.*;
public class Palindrome {
public static void main(String[] args) {
Scanner user_input = new Scanner(System.in);
System.out.println("Enter characters to check for Palindrome: ");
if ( user_input.hasNextInt() ){
String intToString = String.valueOf(user_input.nextInt()).toString();
String reversedInt = new StringBuffer(intToString).reverse().toString();
for (int i = 0; i<intToString.length(); i++) {
if (intToString.charAt(i) != reversedInt.charAt(i)) {
System.out.println("False");
}
else {
System.out.println("True");
}
}
}
else if ( user_input.hasNextLine() ) {
String user_string = user_input.nextLine().replaceAll(" ", "").toLowerCase();
StringBuilder user_mutable_string = new StringBuilder(user_string);
user_mutable_string.reverse();
if (user_string.equals(user_mutable_string.toString())) {
System.out.println("True");
}
else {
System.out.println("False");
}
}
else {
System.out.println("Bonkers!");
}
}
}
由于您正在使用循环来检查 整个 字符串,您不想立即输出 True
,因为您还不知道观点。可能是下一个字符不会通过条件。
您应该改用布尔变量,例如
boolean isPalindrome = true; // let's assume it will be ok
for (int i = 0; i<intToString.length(); i++) {
if (intToString.charAt(i) != reversedInt.charAt(i)) {
isPalindrome = false;
}
}
System.out.println(isPalindrome);
您的问题与您不需要的 for 循环有关。您已经反转数字并将原始数字和反转数字都转换为字符串。然后你需要做的就是比较它们。将 for 循环更改为简单的 if:
if (intToString.equals(reversedInt)) {
System.out.println("True");
}
else {
System.out.println("False");
}
我正在尝试为 Java 中的整数和字符串创建回文应用程序,我的 if 语句有问题,它输出 incorrect/repeating True 和 False 语句:
import java.util.Scanner;
import java.io.*;
public class Palindrome {
public static void main(String[] args) {
Scanner user_input = new Scanner(System.in);
System.out.println("Enter characters to check for Palindrome: ");
if ( user_input.hasNextInt() ){
String intToString = String.valueOf(user_input.nextInt()).toString();
String reversedInt = new StringBuffer(intToString).reverse().toString();
for (int i = 0; i<intToString.length(); i++) {
if (intToString.charAt(i) != reversedInt.charAt(i)) {
System.out.println("False");
}
else {
System.out.println("True");
}
}
}
else if ( user_input.hasNextLine() ) {
String user_string = user_input.nextLine().replaceAll(" ", "").toLowerCase();
StringBuilder user_mutable_string = new StringBuilder(user_string);
user_mutable_string.reverse();
if (user_string.equals(user_mutable_string.toString())) {
System.out.println("True");
}
else {
System.out.println("False");
}
}
else {
System.out.println("Bonkers!");
}
}
}
由于您正在使用循环来检查 整个 字符串,您不想立即输出 True
,因为您还不知道观点。可能是下一个字符不会通过条件。
您应该改用布尔变量,例如
boolean isPalindrome = true; // let's assume it will be ok
for (int i = 0; i<intToString.length(); i++) {
if (intToString.charAt(i) != reversedInt.charAt(i)) {
isPalindrome = false;
}
}
System.out.println(isPalindrome);
您的问题与您不需要的 for 循环有关。您已经反转数字并将原始数字和反转数字都转换为字符串。然后你需要做的就是比较它们。将 for 循环更改为简单的 if:
if (intToString.equals(reversedInt)) {
System.out.println("True");
}
else {
System.out.println("False");
}