无法将0推送到java中的堆栈[已关闭]

a1o7rhls  于 2022-12-25  发布在  Java
关注(0)|答案(1)|浏览(108)

编辑问题以包含desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将有助于其他人回答问题。
20小时前关门了。
Improve this question
我是Java新手。我有问题。这是我的代码

Stack<String> st = new Stack<String>();
int num=9;
while(num > 0){
    st.push(Integer.toString(num%2));
    num/=2;
}
int d=0;
if(!st.isEmpty()){
    d++;
    st.pop();
 }
System.out.println(d);

结果是1分。但是正确的是4分。我不知道怎么改正。如果我的英语不好,对不起。谢谢

eeq64g8w

eeq64g8w1#

你的问题在第8行!当你定义if时,你必须写while循环,而不是if语句
另一点是你的栈应该是integer,并且它不是必须用string定义栈
所以试试看:

Stack<Integer> st = new Stack<>();
int num = 9, d = 0;
while(num > 0){
    st.push(num%2);
    num /= 2;
}

while(!st.isEmpty()){
    d++;
    st.pop();
 }
System.out.println(d);

相关问题