gpt4 book ai didi

java - Java 中 Stack 的 EmptyStackException 错误

转载 作者:行者123 更新时间:2023-12-01 06:45:58 25 4
gpt4 key购买 nike

我想做的是让 eval 变量将它的每个字母放入堆栈中,然后打印出来。我收到 EmptyStackException 错误(假设这意味着堆栈中没有任何内容)。我不明白的是,我以为eval字符串被放入了变量堆栈中。为什么是空的?

public static void main(String[] args)
{

Stack<String> variable = new Stack<String>();

String eval = StdIn.readString();
String alphabet = "abcdefghjiklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";


for (int i = 0; i < eval.length(); i++)
{
eval = eval.substring(i,i);

if (eval.equals(alphabet.substring(0, 52)))// checks if eval is equal to any letter of alphabet
{
variable.push(eval);

System.out.println(variable.pop());
}
}
}
}

我正在使用 eclipse

<小时/>

示例运行:

input: hello
Exception in thread "main" java.util.EmptyStackException
at java.util.Stack.peek(Unknown Source)
at java.util.Stack.pop(Unknown Source)
at eval.main(eval.java:31)

最佳答案

我可以看到一些问题:

  1. eval.substring(i,i); 每次都会返回一个空字符串。您需要 eval.substring(i,i + 1);,或者更好的是 eval.charAt(i);

  2. 您需要将返回的子字符串/charAt 字符放入 for 循环中它自己的变量中。目前,它在第一次迭代后覆盖 eval 字符串。

  3. if (eval.equals(alphabet.substring(0, 52))) 没有按照您的评论判断它的作用。如果您想检查一个字符串是否包含另一个字符串(甚至只是一个字符),请使用以下方法:String#containsString#indexOf

<小时/>

这是一个简单的更正片段:

    String alphabet = "abcdefghjiklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
String eval = "blah";
Stack<Character> chars = new Stack<Character>();

for(char c : eval.toCharArray()) {
if(alphabet.indexOf(c) != -1) {
chars.push(c);
System.out.println(chars.pop());
}
}

关于java - Java 中 Stack 的 EmptyStackException 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13693707/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com