当前位置: 首页 > 知识库问答 >
问题:

我想通过将arrayList传递到java中的新堆栈来反向打印arrayList

鄢开诚
2023-03-14

这个任务要求实现printwordrun,以便它从输入列表words的开头打印它能找到的任何单词。单词run应该以相反的顺序打印,每个单词在单独的一行上。PrintWordRun是一个方法,它接受一个名为words的参数,这是一个ArrayList 。单词run是输入列表中的一系列单词,其中每个单词的长度都比前面的长。一旦我们遇到列表的末尾,或者遇到长度等于或短于前面单词的单词,单词run就结束了。

数组为:

为了获得这个作业的全部学分,我必须使用一个堆栈来打印它,就像我已经做的那样,但是我不能把“happy”这个词放进堆栈。我的输出是:

I
AM
CAT

public class Program {
    private void printWordRun(ArrayList<String> words) {

        // Here is the code I Wrote. 
        Stack<String> wordRun = new Stack<>();

        for(int i = 1; i < words.size(); i++) {
            String str1 = words.get(i-1);
            String str2 = words.get(i);
            if(str2.length() < str1.length()) {
                break;
            }
            if(str1.length() < str2.length()){
                wordRun.push(str1);

            }


            System.out.println(wordRun);
        }
    }

    public static void main(String[] args) {
        Program program = new Program();
        program.testPrintWordRun();
    }

    private void testPrintWordRun() {
        ArrayList<String> words = new ArrayList<>();
        words.add("I");
        words.add("am");
        words.add("cat");
        words.add("with");
        words.add("happy");
        words.add("dog");
        words.add("sitting");

        System.out.println("Testing printWordRun...");
        printWordRun(words);
        System.out.println();
    }
}

共有1个答案

虞承泽
2023-03-14

首先使用add(int index,E element)将单词添加到堆栈中,以插入最后一项作为第一项,如果条件不匹配,则随后中断循环。

private void printWordRun(ArrayList<String> words) {

    // Here is the code I Wrote.
    Stack<String> wordRun = new Stack<>();

    for (int i = 1; i < words.size(); i++) {
        String str1 = words.get(i);
        String str2 = words.get(i - 1);
        wordRun.add(0, str2);
        if(str2.length() >= str1.length()) {
            break;
        }
    }

    System.out.println(wordRun); // [happy, with, cat, am, I]
}
 类似资料:
  • 我想按相反的顺序打印stackx,怎么做?谢谢你..

  • 如何将堆栈跟踪打印到logcat? 当应用程序在Eclipse中运行并且应用程序崩溃时,我会在logcat窗口中收到一系列消息,如“致命异常:main”,并打印堆栈跟踪。但是,当我从命令行使用adb logcat命令时,我没有看到任何这些消息?我看到的只是一条信息,上面写着一个例子。应用程序已经死了。 如何使用adb logcat命令获得Eclipse logcat窗口中显示的相同堆栈跟踪? 编辑

  • 问题内容: 我试图通过意图传递对象的ArrayList,但无法使其工作。这是我所拥有的: 在这里收到意向: 我们已经收到了两个int值,correctAnswer和faultAnswers,我可以使用它们。ArrrayList没有通过。endQuiz()方法中没有错误,但’qs = getIntent()。getParcelableArrayListExtra(“ queries”);’ 抛出错误

  • 问题内容: 我正在寻找一种在PHP中打印调用堆栈的方法。 如果函数刷新IO缓冲区,则奖励积分。 问题答案: 如果要生成回溯,则正在寻找 和/或 。 例如,第一个将为您提供一个像这样的数组 (引用手册) : 它们显然不会刷新I / O缓冲区,但是您可以使用 和/或自己进行操作 。 (请参阅第一个手册页,以了解为什么使用“和/或” ;-))

  • 我正试图把我的脑袋围绕着我在编程集中遇到的一个问题。 我们应该编写从文件中读取并打印出来的代码。我明白,我能做到。 他要我们做的是把它反向打印出来。 文件内容如下: 下面是改进后的代码,我尝试将其放入数组中。 数组中的数据没有打印出来。

  • 我使用以下代码打印try-catch块中发生的任何异常,但是当异常发生时,logback不会打印完整的堆栈跟踪,而是写入一行错误(它没有明确说明是什么导致了它。我如何在logback输出中打印完整的堆栈跟踪? 尝试捕获异常的catch块 日志返回错误输出: