用Java完成以下程序:判断从键盘输入的字符串是否为回文串(回文串:正读和反读都一样的字符串 例 如 level、noon ),是回文串则输出“yes”,否则输出“no”。
时间: 2024-05-14 10:13:20 浏览: 35
好的,这是一个Java程序,我们可以先读取用户从键盘输入的字符串,然后使用StringBuilder的reverse方法将字符串反转,最后比较反转后的字符串与原始字符串是否完全相等,如果相等,则输出“yes”,否则输出“no”。下面是示例代码:
```
import java.util.Scanner;
public class Palindrome {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个字符串:");
String input = scanner.nextLine();
StringBuilder strBuilder = new StringBuilder(input);
String reversedInput = strBuilder.reverse().toString();
if (input.equals(reversedInput)) {
System.out.println("yes");
} else {
System.out.println("no");
}
}
}
```
希望这个程序能够帮助你验证回文串。
相关问题
用Java编写程序,判断从键盘输入的字符串是否为回文
您好!针对您的问题,我可以提供以下Java代码作为参考:
```java
import java.util.Scanner;
public class PalindromeChecker {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入一个字符串:");
String input = scanner.nextLine();
if (isPalindrome(input)) {
System.out.println(input + " 是回文字符串");
} else {
System.out.println(input + " 不是回文字符串");
}
}
public static boolean isPalindrome(String str) {
int i = 0;
int j = str.length() - 1;
while (i < j) {
if (str.charAt(i) != str.charAt(j)) {
return false;
}
i++;
j--;
}
return true;
}
}
```
该程序通过 `Scanner` 类从键盘读入一个字符串,并调用 `isPalindrome` 方法判断该字符串是否为回文。 `isPalindrome` 方法使用双指针技巧,分别从字符串的开头和结尾向中间遍历,比较对应字符是否相等。如果出现不相等的情况,说明该字符串不是回文,返回 `false`,否则遍历完整个字符串后返回 `true`。
用Java写一个链栈程序:判断一个输入的字符串是否符合正读和反读都相等的要求
以下是用Java实现链栈判断回文字符串的程序:
```java
import java.util.Scanner;
class Node {
char data;
Node next;
public Node(char data) {
this.data = data;
this.next = null;
}
}
class Stack {
private Node top = null;
public void push(char c) {
Node newNode = new Node(c);
newNode.next = top;
top = newNode;
}
public char pop() {
if (top == null) {
return ' ';
}
char data = top.data;
top = top.next;
return data;
}
public boolean isEmpty() {
return top == null;
}
}
public class PalindromeStack {
public static boolean isPalindrome(String str) {
Stack stack = new Stack();
int len = str.length();
for (int i = 0; i < len / 2; i++) {
stack.push(str.charAt(i));
}
if (len % 2 != 0) {
stack.pop();
}
for (int i = len / 2; i < len; i++) {
char c = stack.pop();
if (c != str.charAt(i)) {
return false;
}
}
return true;
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入一个字符串:");
String str = scanner.next();
if (isPalindrome(str)) {
System.out.println(str + " 是回文字符串");
} else {
System.out.println(str + " 不是回文字符串");
}
}
}
```
程序中,我们定义了一个 `Node` 类表示链表节点,和一个 `Stack` 类表示链栈。在 `isPalindrome` 方法中,我们先将字符串的前一半字符依次入栈,然后如果字符串长度为奇数,将中间的字符弹出(因为中间的字符无论正反读都是一样的);最后再将栈中剩余的字符与字符串的后一半字符一一比较即可。
在主函数中,我们通过 Scanner 类从命令行输入一个字符串,然后调用 `isPalindrome` 方法来判断该字符串是否是回文字符串。