public class Test13 { public static void main(String[] args) { Stack<Character> mystack1 = new Stack<Character>(); Stack<Character> mystack2 = new Stack<Character>(); StringBuffer bu = new StringBuffer(); for (char c='A';c<='D';c++) mystack1.push(new Character(c)); while(!(mystack1.empty())) { Character temp = mystack1.pop(); mystack2.push(temp); } while(!(mystack2.empty())) { Character temp = mystack2.pop(); bu.append(temp.charValue()); } System.out.println(bu); } }运行结果且为什么
时间: 2024-03-31 10:36:01 浏览: 23
运行结果为 DCBA。原因是程序先创建了两个空的 Stack,然后使用 for 循环向第一个 Stack 中添加了字符 A、B、C、D。接着,程序使用 while 循环将第一个 Stack 中的元素弹出并依次压入第二个 Stack 中,这样就实现了将第一个 Stack 中的元素反转的效果。最后,程序再次使用 while 循环将第二个 Stack 中的元素弹出并添加到 StringBuffer 中,形成了字符 D、C、B、A 的字符串。因此,最终输出结果为 DCBA。
相关问题
public class Test13 { public static void main(String[] args) { Stack<Character> mystack1 = new Stack<Character>(); Stack<Character> mystack2 = new Stack<Character>(); StringBuffer bu = new StringBuffer(); for (char c='A';c<='D';c++) mystack1.push(new Character(c)); while(!(mystack1.empty())) { Character temp = mystack1.pop(); mystack2.push(temp); } while(!(mystack2.empty())) { Character temp = mystack2.pop(); bu.append(temp.charValue()); } System.out.println(bu); } }
这段代码会输出什么?
答案是:DCBA
这段代码创建了两个 Stack 对象 mystack1 和 mystack2,以及一个 StringBuffer 对象 bu。然后,它使用 for 循环将字符 'A' 到 'D' 依次压入 mystack1 中。接着,它将 mystack1 中的元素依次弹出并压入 mystack2 中,从而实现了 mystack1 中元素的逆序。最后,它将 mystack2 中的元素依次弹出并追加到 bu 中。
因此,这段代码的输出是 DCBA。
请检查并优化下面这串代码:import java.util.ArrayList; class MyStack extends ArrayList<String> { public void push(String str) { this.add(str); } public String pop() { if (this.isEmpty()) { return null; } int lastIndex = this.size() - 1; String str = this.get(lastIndex); this.remove(lastIndex); return str; } } public class TestMyStack { public static void main(String[] args) { MyStack stack = new MyStack(); for (int i = 0; i < 5; i++) { System.out.print("请输入第" + (i + 1) + "个字符串:"); String str = System.console().readLine(); stack.push(str); } System.out.println("\n逆序显示这些字符串:"); while (!stack.isEmpty()) { String str = stack.pop(); System.out.println(str); } } }
这段代码已经非常简洁和有效,但是还有一些可以改进的地方。以下是我提出的一些建议:
1. 在MyStack类中,我们可以重写add方法,以确保只添加字符串类型的元素。这样可以避免将错误类型的元素添加到堆栈中。
2. 在MyStack类中,我们可以重写toString方法,以便在打印堆栈时更方便。
3. 在TestMyStack类中,我们可以使用Scanner类来替换System.console().readLine()方法。
以下是修改后的代码:
```
import java.util.ArrayList;
import java.util.Scanner;
class MyStack extends ArrayList<String> {
@Override
public boolean add(String str) {
if (str instanceof String) {
return super.add(str);
}
return false;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
for (int i = this.size() - 1; i >= 0; i--) {
sb.append(this.get(i)).append("\n");
}
return sb.toString();
}
public String pop() {
if (this.isEmpty()) {
return null;
}
int lastIndex = this.size() - 1;
String str = this.get(lastIndex);
this.remove(lastIndex);
return str;
}
}
public class TestMyStack {
public static void main(String[] args) {
MyStack stack = new MyStack();
Scanner scanner = new Scanner(System.in);
for (int i = 0; i < 5; i++) {
System.out.print("请输入第" + (i + 1) + "个字符串:");
String str = scanner.nextLine();
stack.push(str);
}
System.out.println("\n逆序显示这些字符串:");
System.out.println(stack);
}
}
```
现在,add方法确保只添加字符串类型的元素,toString方法以逆序显示堆栈,而使用Scanner类来获取用户输入。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)