Java二进制搜索树的实现 import java.util.Scanner; 导入java.util.Stack; 公共类堆栈_1{ 公共静态void main(字符串[]args){ 字符串val; 扫描仪输入=新扫描仪(System.in); System.out.println(“输入文本:”); val=input.nextLine(); 推(val); } 公共静态无效推送(字符串str){ 堆栈stk=新堆栈(); 对于(int i=0;i=0;i--) reverseString=reverseString+original.toUpperCase().charAt(i); if(original.toUpperCase().equals(stk)) System.out.println(“字符串是回文。”); else if(reverseString.toUpperCase().equals(stk)) System.out.println(“字符串不是回文。”); } }
有人能帮我吗。我不知道我哪里出错了。问题是创建一个堆栈(字符),并在文本是否为回文的位置显示文本。用户必须输入输入Java二进制搜索树的实现 import java.util.Scanner; 导入java.util.Stack; 公共类堆栈_1{ 公共静态void main(字符串[]args){ 字符串val; 扫描仪输入=新扫描仪(System.in); System.out.println(“输入文本:”); val=input.nextLine(); 推(val); } 公共静态无效推送(字符串str){ 堆栈stk=新堆栈(); 对于(int i=0;i=0;i--) reverseString=reverseString+original.toUpperCase().charAt(i); if(original.toUpperCase().equals(stk)) System.out.println(“字符串是回文。”); else if(reverseString.toUpperCase().equals(stk)) System.out.println(“字符串不是回文。”); } },java,Java,有人能帮我吗。我不知道我哪里出错了。问题是创建一个堆栈(字符),并在文本是否为回文的位置显示文本。用户必须输入输入 p.S这是我的一项实验室测试。如果我正确地遵循代码,问题似乎是OP正在将字符串对象(原始或反向)与堆栈对象进行比较 因此,可能的失败是尝试将字符串对象与堆栈对象进行不正确的比较 我认为if/else if逻辑中存在第二个失败,因为“cool”的示例输入不是回文,但在这种情况下不会生成输出 编辑:虽然操作码尝试根据输入数据的情况进行调整(这是否是一项要求的问题中未给出),但它不考虑空
p.S这是我的一项实验室测试。如果我正确地遵循代码,问题似乎是OP正在将
字符串
对象(原始或反向
)与堆栈
对象进行比较
因此,可能的失败是尝试将字符串
对象与堆栈
对象进行不正确的比较
我认为if/else if
逻辑中存在第二个失败,因为“cool”的示例输入不是回文,但在这种情况下不会生成输出
编辑:虽然操作码尝试根据输入数据的情况进行调整(这是否是一项要求的问题中未给出),但它不考虑空格或其他标点符号。据英国《每日邮报》报道,标点符号通常也被忽略。同样,问题中没有定义是否关注空格、句点、破折号等是练习的一部分。就全部要求而言,这个问题有点不够明确
我认为使用堆栈的解决方案将使用字符串
,按字符将其推到堆栈
(当时可能会更正大小写并去掉所有标点),然后从堆栈中弹出进行比较。我认为OP代码在使用堆栈时缺少了部分需求
示例代码在堆栈上仅包含字符。当然,还有其他方法:
import java.util.Scanner;
import java.util.Stack;
public class Stack_1 {
public static void main(String[] args) {
String val;
Scanner input = new Scanner(System.in);
System.out.println("Enter Text: ");
val = input.nextLine();
push(val);
}
public static void push(String str) {
Stack<Character> stk = new Stack<Character>();
for (int i = 0; i < str.length(); i++) {
stk.push(str.charAt(i));
}
System.out.println(stk);
String reverseString = "";
String original = "";
int length = original.length();
for (int i = length - 1; i >= 0; i--)
reverseString = reverseString + original.toUpperCase().charAt(i);
if (original.toUpperCase().equals(stk))
System.out.println("The string is a palindrome.");
else if (reverseString.toUpperCase().equals(stk))
System.out.println("The string is not a palindrome.");
}
}
使用堆栈检查字符串的循环示例:
// convert out comparison String to lower case and remove
// all non letters
String chk = str.toLowerCase().replaceAll("[^a-z]", "");
样本测试数据:
cool是一个回文:false
妈妈是回文:真的
从不奇数或偶数是回文:真
一个人,一个计划,一条运河——巴拿马!是回文:对
这个问题的标题与检查字符串是否是回文有关吗?发布一个,你不能只发布代码然后说“修复”。我只需要关于如何改进代码的指导和建议。从那里我可以修好它。
// convert out comparison String to lower case and remove
// all non letters
String chk = str.toLowerCase().replaceAll("[^a-z]", "");
// assume we have a palindrome
boolean palindrome = true;
// counter across the String
int i = 0;
// loop while there is more on the stack and we haven't
// failed our test
while (! stk.isEmpty() && palindrome) {
Character c = stk.pop();
palindrome = (c == chk.charAt(i++));
}