如何在Java中打印arrayList,打印“last-first out”

时间:2014-10-28 11:25:13

标签: java arraylist

所以这是我的问题/问题:

作业是编写一个程序,它接受n个字符串,即单词或句子,然后用“后进先出”方法打印出字符串,并计算这句话中的单词。到目前为止这是我的代码,但是如何打印最后的x输入?

import static javax.swing.JOptionPane.*;

import java.util.ArrayList;

    public class Moment2
    {
        public static void main (String [] args)
        {
            String indata;
            int count;
            indata = showInputDialog("Hur många strängar ska räknas?");
            count = Integer.parseInt(indata);
        StringHandlerY lastword = null;

        while (true) {
            ArrayList<String> mening = new ArrayList<String>();
            String ord = showInputDialog("Skriv ett ord eller en mening. Annars, tryck 'Cancel'. ");
              if (ord == null) {
                break;
              }
              else {
                //count ++;
                mening.add(ord);
                lastword = new StringHandlerY(ord);
              }
            }
            print(lastword, count);
            }

          public static void print(StringHandlerY lastWord, int stringCount) {
              showMessageDialog(null, "Du tryckte 'cancel' \nDu har givit "+stringCount+" strängar."
                    + "\nSträngen: \n'" + lastWord.getString() +"', har "+ lastWord.getWords() + " ord");

          }
        }

//这是在另一个文件中:

public class StringHandlerY 
{
    static int nrOfObjects;
    private String str;

    // konstruktor
    StringHandlerY (String s) {
        str = s;
    }
    // accessor / getters - returnan någonting
    int getWords () {
        String[] temp = this.str.split(" ");
        int i = temp.length;
        return i;
    }
    String getString () {
        return this.str;
    }
}**strong text**

2 个答案:

答案 0 :(得分:1)

latestStringTry堆栈已经存在且允许删除最后一个元素:

 Stack<String> stringStack = new Stack<String>();
 stringStack.push("Hello World");
 stringStack.push("Hi World");
 String latestString = stringStack.pop();
 System.out.println("Last string was " + latestString + " with size " + latestString.split("\\s+").length);

如果您想坚持使用List,请尝试使用LinkedList,如下所示:

LinkedList<String> stringList = new LinkedList<String>();
stringList.add("Hello World");
stringList.add("Hi World");
String latestString = stringList.removeLast();
System.out.println("Last string was " + latestString + " with size "
            + latestString.split("\\s+").length);

答案 1 :(得分:0)

使用ListIterator,这个迭代器允许我们在两个方向上进行迭代。迭代器有像

这样的方法

先前() 返回列表中的上一个元素并向后移动光标位置。

hasPrevious() 如果此列表迭代器在反向遍历列表时具有更多元素,则返回true。

http://docs.oracle.com/javase/7/docs/api/java/util/ListIterator.html

示例代码:http://examples.javacodegeeks.com/core-java/util/arraylist/arraylist-listiterator-example/