为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

湖上湖 2022-01-06 17:10:59
我一直在尝试编写一个程序来打印 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 bif (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 并打印类似已验证的内容,如果一切正常,或者打印得到错误结果的组合。 ? 没有数组,只交换...提前谢谢
查看完整描述

2 回答

?
达令说

TA贡献1821条经验 获得超6个赞

我会使用Math.min(int, int) and 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;


查看完整回答
反对 回复 2022-01-06
?
天涯尽头无女友

TA贡献1831条经验 获得超9个赞

为什么不将 a,b,c,d,e 值存储在最内层循环中,并在交换代码后再次将其重新分配给变量?像这样,


public static void main(String args[]) {

        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++ ){

                         // Store the variable values

                         int ap = a;

                         int bp = b;

                         int cp =c;

                         int dp = d;

                         int ep = e;


                        // Swapping logic for finding min and max

                        // Due to swapping, the values of a,b,c,d,e may change

                        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.print(a+""+b+""+c+""+d+""+e+" ");

                        System.out.println(b + " " + a);


                        // Reassign the variable values

                        a = ap;

                        b = bp;

                        c=cp;

                        d=dp;

                        e=ep;

                    }

                }

            }

        }

    }

    }



查看完整回答
反对 回复 2022-01-06
  • 2 回答
  • 0 关注
  • 179 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信