2014-10-20 49 views
0

好的家伙我需要这个实验室是显示堆栈,我在JOptionMessageDialog框中,我不知道如何显示堆栈。我继续显示@ jkh24k54而不是整数集。JOptionDialog显示堆栈如何?

我的代码:

import java.util.Random; 
import javax.swing.JOptionPane; 

public class Lab5 
{ 

    public static void main(String[] arg) 
    { 

Random rnd = new Random(); 

Stack<Integer> stack = new IStack<Integer>(); 
Stack<Integer> stack0= new IStack<Integer>(); 
Stack<Integer> stack1= new IStack<Integer>(); 
Stack<Integer> stack2= new IStack<Integer>(); 
int stream; 


for(int i=0;i<20;i++) 
{ 
    stream = rnd.nextInt(101); 
    stack.push(stream); 
    stack2.push(stream); 
} 
while(!stack2.isEmpty()) 
{ 
    int x = stack2.pop(); 
    stack.push(x); 
} 

    for(int i=0; i<20; i++) 
    { 
    int x= stack.pop(); 

    if(x%3==0) 
    stack0.push(x); 
    if(x%3==1) 
    stack1.push(x); 
    if(x%3==2) 
    stack2.push(x); 
} 

    while(!stack.isEmpty()) 
     System.out.print(stack.pop()+" "); 
    System.out.println(); 
    while(!stack0.isEmpty()) 
     System.out.print(stack0.pop()+" "); 
    System.out.println(); 
    while(!stack1.isEmpty()) 
     System.out.print(stack1.pop()+" "); 
    System.out.println(); 
    while(!stack2.isEmpty()) 
     System.out.print(stack2.pop()+" "); 
    System.out.println(); 

JOptionPane.showMessageDialog(null, "Original stack: "+ stack.toString()+ "\n"+ 
           " 0%3: "+stack0.toString()+"\n"+ "1%3: "+stack1.toString()+"\n"+ " 2%3: "+stack2.toString()); 

}}

+0

最后一行是我需要的。 – 2014-10-20 18:46:07

回答

2

您的通话在默认情况下,这就是为什么你得到@ jkh24k54打印其存储位置的对象的默认toString()方法。您需要重写堆栈类的toString()方法以返回数组中的元素的字符串。

一个例子:像这样的东西添加到你的堆栈类。

@Override 
public String toString() 
{ 
    String returnString = ""; 
    for(int i = 0; i < yourarray.length; i++) 
    { 
     if(yourarray[i] != null) 
     { 
      returnString += yourarray[i]; 
     } 
     ////if you want to add spaces for null then add this 
     else 
     { 
      returnString += " "; 
     } 
     ////the else is probably not necessary for what you are doing 
    } 
    return returnString; 
} 
+0

它不打印每个说的内存位置;它打印出它的哈希码,在某些情况下(我认为它是java8 +)是内存位置。 – Pokechu22 2014-10-20 18:48:15

+0

我该怎么做? 根据本实验的要求,我无法在自己的代码中创建实际的字符串。 – 2014-10-20 18:48:21

+0

够好,它工作。他可能会计数,但我有20分钟的工作。只有其他问题是,当我这样做时,我得到了一些数字和数组中的每个空插槽“空”到20 ..有没有办法解决这个问题? – 2014-10-20 18:57:11