Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
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 - Fatal编程技术网

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++));
    }