gpt4 book ai didi

java - 打印最大值和最小值,检查程序

转载 作者:行者123 更新时间:2023-12-02 01:49:38 24 4
gpt4 key购买 nike

我一直在尝试编写一个程序来打印 5 个整数类型变量的最小值和最大值,不使用数组,仅使用这种技术进行交换

if (x > y) {
int tmp = x;
x = y;
y = tmp;
}

现在这就是我想出的(虽然我知道只有 6 次交换是可能的,但我无法弄清楚):

Scanner input = new Scanner(System.in);
int a = input.nextInt();
int b = input.nextInt();
int c = input.nextInt();
int d = input.nextInt();
int e = input.nextInt();

//storing max value in a all the way, and min value in b
if (a < b) {
int tmp = a;
a = b;
b = tmp;

}
if (a < c) {
int tmp = a;
a = c;
c = tmp;

}
if (a < d) {
int tmp = a;
a = d;
d = tmp;

}
if (a < e) {
int tmp = a;
a = e;
e = tmp;

}
if (c < b) {
int tmp = b;
b = c;
c = tmp;

}
if (d < b) {
int tmp = b;
b = d;
d = tmp;

}
if (e < b) {
int tmp = b;
b = e;
e = tmp;

}
System.out.println(b +"\n" + a);

现在这应该可以工作了,但是我还需要编写一段代码来确保程序正常工作,这样我就可以检查所有包含 0 和 1 的组合。即 2^5=32 种组合。如果其中之一失败,则打印它。我尝试这样做:

for (int a = 0; a <= 1; a++) {
for(int b = 0; b <= 1; b++) {
for(int c = 0; c <= 1; c++) {
for(int d = 0; d <= 1; d++) {
for(int e = 0; e <= 1; e++) {
if (a < b){
int tmp = a;
a = b;
b = tmp;

}
if (a < c) {
int tmp = a;
a = c;
c = tmp;

}
if (a < d) {
int tmp = a;
a = d;
d = tmp;

}
if (a < e) {
int tmp = a;
a = e;
e = tmp;

}
if (c < b) {
int tmp = b;
b = c;
c = tmp;
}
if (d < b) {
int tmp = b;
b = d;
d = tmp;

}
if (e < b) {
int tmp = b;
b = e;
e = tmp;
}
System.out.println(b + "\n" + a);
}
}
}
}
}

但这不起作用,因为一旦任何变量中有一个“1”,a就会得到它,然后我将无法正确运行组合。****基本上,这是循环内代码的测试器,因此它应该测试 0000-11111 并打印类似验证的内容(如果一切正常),或者打印得到错误结果的组合..但是我可以'不知道它会如何做到这一点.****有什么建议么?没有数组,仅交换...在此先感谢

最佳答案

我会使用 Math.min(int, int) Math.max(int, int) 和一长串调用。就像,

Scanner input = new Scanner(System.in);
int a = input.nextInt();
int b = input.nextInt();
int c = input.nextInt();
int d = input.nextInt();
int e = input.nextInt();
int min = Math.min(Math.min(Math.min(Math.min(a, b), c), d), e);
int max = Math.max(Math.max(Math.max(Math.max(a, b), c), d), e);

你的“交换代码”毫无意义。这是另一个实现

Scanner input = new Scanner(System.in);
int a = input.nextInt();
int b = input.nextInt();
int c = input.nextInt();
int d = input.nextInt();
int e = input.nextInt();
int min = Integer.MAX_VALUE, max = Integer.MIN_VALUE;
min = (a < min) ? a : min;
min = (b < min) ? b : min;
min = (c < min) ? c : min;
min = (d < min) ? d : min;
min = (e < min) ? e : min;
max = (a > max) ? a : max;
max = (b > max) ? b : max;
max = (c > max) ? c : max;
max = (d > max) ? d : max;
max = (e > max) ? e : max;

关于java - 打印最大值和最小值,检查程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53180731/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com