我一直在尝试编写一个程序来打印 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;
}
但这不起作用,因为一旦任何变量中有一个“1”,就会得到它,然后我将无法正确运行组合.. ****基本上这是代码中的测试器循环,所以它应该测试 0000-11111 并打印类似已验证的内容,如果一切正常,或者打印得到错误结果的组合。 ? 没有数组,只交换...提前谢谢
达令说
天涯尽头无女友
相关分类