package com.day08.mystack;public class Mystack {
private Object []data;
private int top;
private int[] is;

public Mystack(int size){
data=new Object[size];
top=0;
}

public boolean push(Object num){
if(top!=data.length){
data[top]=num;
top++;
System.out.println(num+"入栈成功!");
return true;
}else{
System.out.println("栈满,入栈失败!");
return false;
}
}

public Object pop(){
if(top!=0){
top--;
return data[top];
}
return null;
}
public void showMe(){
for(int i=0;i<top;i++){
System.out.print(data[i]+"  ");
}
System.out.println();
}

}
-------------------------------------------Mystack类
-------------------------------------------下是Test测试:
package com.day08.mystack;
import java.util.Scanner;
public class Test { /**
 * @param args
 */
public static void main(String[] args) {
// Mystack s=new Mystack(5);                   
// s.push(1);
// s.push(2);
// s.push(3);
// s.push(4);
// s.push("sewf");
// s.showMe();
Scanner sca=new Scanner(System.in);
System.out.println("输入栈的大小:");
int size =sca.nextInt();
Mystack s=new Mystack(size);
System.out.println("要存的数据:");
while(true){
Object num=sca.next();
if(s.push(num)){ }else{
System.out.println("未入");
}
}
}}-----------------------------------------------问题是这里的pop()怎么测试啊????

解决方案 »

  1.   

    test里面while循环换成for:
    System.out.println("要存的数据:");
    for(int i=0;i<size;i++){
    Object num=sca.next();
    }
    System.out.println("出栈"+s.pop());

    // while(true){
    // Object num=sca.next();
    // if(s.push(num)){
    //
    // }else{
    // System.out.println("未入");
    // }
    // }

    控制台信息--------------------------------------------------
    输入栈的大小:
    5
    要存的数据:
    1
    2
    3
    4
    5
    出栈null
      

  2.   

    终于做完了  忙了几个小时真失败啊  
    ---------------------------------------Mystack类
    package com.day08.mystack;public class Mystack {
    private Object []data;
    private int top;

    public Mystack(int size){
    data=new Object[size];                              //这里不能是new Mystack 这洋酒死了 的是Object要不然值怎么存进去
    top=0;
    }

    public boolean push(Object num){
    if(top!=data.length){
    data[top]=num;
    top++;
    System.out.println(num+"入栈成功!");
    return true;
    }else{
    System.out.println("栈满,入栈失败!");
    return false;
    }
    }

    public Object pop(){
    if(top!=0){
    top--;
    return data[top];
    }
    return null;
    }
    public void showMe(){
    for(int i=0;i<top;i++){
    System.out.print(data[i]+"  ");
    }
    System.out.println();
    }

    }----------------------------------------------下为测试Test:
    package com.day08.mystack;
    import java.util.Scanner;
    public class Test { /**
     * @param args
     */
    public static void main(String[] args) {
    // Mystack s=new Mystack(5);
    // s.push(1);
    // s.push(2);
    // s.push(3);
    // s.push(4);
    // s.push("sewf");
    // s.showMe();
    Scanner sca=new Scanner(System.in);
    System.out.println("输入栈的大小:");
    int size =sca.nextInt();
    Mystack s=new Mystack(size);
    System.out.println("要存的数据:");
    for(int i=0;i<size;i++){
    Object num=sca.next();
    s.push(num);
    }
    s.showMe();                             ///为啥这里showME不输出啊???

    for(int j=size;j>0;j--){
    System.out.println("出栈"+s.pop());
    }



    // while(true){
    // Object num=sca.next();
    // if(s.push(num)){
    //
    // }else{
    // System.out.println("未入");
    // }
    // }
    }}
    -----------------------------------------------------控制台结果:
    输入栈的大小:
    5
    要存的数据:
    1
    1入栈成功!
    2
    2入栈成功!
    3
    3入栈成功!
    4
    4入栈成功!
    5
    5入栈成功!
    1  2  3  4  5  
    出栈5
    出栈4
    出栈3
    出栈2
    出栈1
    ---------------------------------------------------------感言:
    这个写的还是不好,test太人工了感觉 后面pop出栈 还要自己弄个for循环,应该在Mystack里面弄个智能的pop3。高手能帮完善下吗 小弟只会想  还写不出来刚学java第8天。太戳了我 唉
      

  3.   


    恭喜啊,去看Stack的源码吧
      

  4.   

    jdk根目录有一个src.zip,这就是源码