首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有序和无序序列

有序和无序序列
EN

Stack Overflow用户
提问于 2020-06-01 20:24:39
回答 2查看 337关注 0票数 0

我想编写一个程序来读取整数序列,如果序列是有序的(按asc或desc顺序),则输出为true,否则,为false。

序列以0结尾。不要将此数字视为序列的一部分。序列总是至少有一个数字(不包括0)。

我的代码:

代码语言:javascript
复制
import java.util.Scanner;
class Main {
    public static void main(String[] args) {
        Scanner read = new Scanner(System.in);
        int a;
        int b;
        boolean asc = true;
        boolean dsc = true;
        a = read.nextInt();
        while (a == 0) {
            a = read.nextInt();
        }
        while (true) {
            b = read.nextInt();
            if (b == 0) {
                break;
            }
            dsc = dsc && a >= b;
            asc = asc && a <= b;
            if (asc || dsc == false) {
                break;
            }
            a = b;
        }
        System.out.println(asc || dsc);
    }
}

测试标准输入:1 2

正确输出:假

我的代码输出: true

我的密码怎么了?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-06-01 20:30:53

我认为问题在于您的if语句if (asc || dsc == false),它很可能应该是if (!asc && !dsc)

其结果将是:

代码语言:javascript
复制
import java.util.Scanner;
class Main {
    public static void main(String[] args) {
        Scanner read = new Scanner(System.in);
        int a;
        int b;
        boolean asc = true;
        boolean dsc = true;
        a = read.nextInt();
        while (a == 0) {
            a = read.nextInt();
        }
        while (true) {
            b = read.nextInt();
            if (b == 0) {
                break;
            }
            dsc = dsc && a >= b;
            asc = asc && a <= b;
            if (!asc && !dsc) {
                break;
            }
            a = b;
        }
        System.out.println(asc || dsc);
    }
}
票数 1
EN

Stack Overflow用户

发布于 2020-06-01 20:35:05

break语句之前的if条件是错误的。当你写

代码语言:javascript
复制
if (asc || dsc == false)

它将检查asctrue还是dscfalse,这意味着如果第一个数字上升,它将立即中断,如果不是,它将打破第一次没有下降的序列。

您应该放在那里的是!asc && !dsc,它将为您提供所需的输出。只有当ascdsc都是假的并且您的序列没有顺序时,它才会中断。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62140451

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档