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

当数值下降时,如何使用循环和中断来比较在Java中输入的值?

公良阳波
2023-03-14

所以我对Java还是一个新手,我以前的大部分知识都是关于Python和C++的,所以我不知道如何存储输入的数据以便进行比较。所以本质上,我希望用户输入一组整数值--他们想要的任何数字。然而,当他们不断输入这些值时,会发生的情况是当它下降时(如果它连续下降3次),它将中断循环,程序将结束。我不确定如何将输入的数据存储起来以便与前一个条目进行比较,或者是否有一种不使用列表的方法(就像我在python中所做的那样)。

到目前为止,我所掌握的是非常基本的,我需要弄清楚如何在while循环中生成if语句,以便能够比较前面的输入。

public static void main (String[] args)
{
    Scanner keyboard = new Scanner(System.in);

    System.out.println("Enter your number: ");

    int n = keyboard.nextInt();
    while (true) {
        if (n > 0) {
            System.out.println("Enter your new number: ")
            int n = keyboard.nextInt();
        }
    }
}

抱歉,如果这不是很多,但我真的不知道从哪里开始比较输入的值-只有真正知道如何让他们输入。

共有1个答案

姚麒
2023-03-14

我错过了注释,您只想知道如何检查列表是否排序。所以我编写了一些代码来解决您的问题:)您可以将它与您的解决方案进行比较:

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Test {

    public static final int SIZE = 3;
    private static List<Integer> lastThreeValues;

    public static void addNewValue(int value) {
        if (isFull()) {
            lastThreeValues.remove(0);
        }
        lastThreeValues.add(value);
    }

    public static boolean isFull() {
        return lastThreeValues.size() == SIZE;
    }

    public static boolean isDescending() {
        int prev = Integer.MAX_VALUE;
        for (int value : lastThreeValues) {
            if (prev > value) {
                prev = value;
            } else {
                return false;
            }
        }
        return true;
    }

    public static boolean close() {
        if (isFull()) {
            return isDescending();
        }
        return false;
    }

    public static void main(String[] args) {
        lastThreeValues = new ArrayList<>(SIZE);

        Scanner keyboard = new Scanner(System.in);
        System.out.println("Enter your number: ");
        int n = keyboard.nextInt();
        addNewValue(n);

        do {
            addNewValue(n);

            if (n > 0) {
                System.out.println("Enter your new number: ");
                n = keyboard.nextInt();
            }
        } while (!close());

        keyboard.close();
        System.out.println("closed");
    }
}

一些更多的想法:

  • 使用后关闭扫描仪:keyboard.close()
  • 有一些实用程序用于检查列表是否排序。查看如何确定列表是否按Java排序?
 类似资料:
  • 我想使用现有的数组元素作为开关大小写,而不是为开关大小写提供常量字符串值 我在用于显示的资源字符串数组中有值,用户必须从这些显示值中选择,现在我想比较我在共享首选项中保存的输入值和我在数组资源中的值,我写了类似的东西,但它不起作用

  • 我的代码不会跳出while循环,而是仍然要求用户输入。当我按enter时,它不会再次打印“::”,但从不执行que.view()

  • 我不能更改数组,它在每个元素中存储一个线程,所以我宁愿尽可能简单地避免损坏线程的内容(线程是同步化的,并使用ReentrantLock--所以问题只是关于数组)。 我想让这个for循环变得简单: 让我把它当成一个循环数组。我想过使用mudolo操作来实现这一点,但这也不起作用。以下是我尝试的:

  • 问题内容: stackoverflow成员,我需要您的帮助。 我在下面给出了一个JsonObject 我正在获取parentId为null。我想将parentId值从null替换为0。 我正在尝试使用下面提到的代码来做到这一点 但似乎不起作用。我在这里做错了。 问题答案: 使用以下JsonObject方法检查针对任何键的值是否为null 此方法用于针对任何键检查Null或该键没有值。 在文档中检查

  • 我一直在寻找如何弄清楚如何让一个输入或某些东西进入一个time循环。就像在,输入()命令不会停止我的秒表。我尝试过tkinter、pygame和其他几种方法,但它们都不起作用。如果有人能帮我,我更喜欢小而简单的东西,如果这是可能的话。具体来说,我想学习做什么,基本上是允许在按下任何键时立即停止(最好不按回车键)。谢谢,马鞍猪! 以下是我到目前为止的情况,没有任何东西可以激活停止:

  • 我有一个关于一些国家的下拉列表如下, 我想通过使用Selenium和Java将值US、CA、AF、AL、DZ、AS、AD发送到一个数组,循环它并打印。 我尝试了以下操作 这将打印美国,加拿大,阿富汗,阿尔巴尼亚等,但我想像美国CA AF AL DZ作为广告