我想编写一个程序来读取整数序列,如果序列是有序的(按asc或desc顺序),则输出为true,否则,为false。
序列以0结尾。不要将此数字视为序列的一部分。序列总是至少有一个数字(不包括0)。
我的代码:
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
我的密码怎么了?
发布于 2020-06-01 20:30:53
我认为问题在于您的if语句if (asc || dsc == false),它很可能应该是if (!asc && !dsc)。
其结果将是:
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);
}
}发布于 2020-06-01 20:35:05
break语句之前的if条件是错误的。当你写
if (asc || dsc == false)它将检查asc是true还是dsc是false,这意味着如果第一个数字上升,它将立即中断,如果不是,它将打破第一次没有下降的序列。
您应该放在那里的是!asc && !dsc,它将为您提供所需的输出。只有当asc和dsc都是假的并且您的序列没有顺序时,它才会中断。
https://stackoverflow.com/questions/62140451
复制相似问题