h_yyyyyyyyy 2022-04-12 10:23 采纳率: 100%
浏览 40
已结题

java的int位置

java寻找随机数列的最大最小值中int位置不一样运行结果不一样
如果把
int max = a[0][0],min=a[5][5];
int ki_max=2,ki_min=0,kj_max=2,kj_min=0;
放在int [][]a=new int[8][9];后面min输出数值和位置都是0; (1)
放在 for(int i=0;i<a.length;i++) { (2)
for(int j=0;j<a.length;j++) {
前面输出结果就是正确的

int的位置也会影响for语句的运行吗

下面是编程内容

    int [][]a =new int[8][9];//给所有元素都赋值0                       //(1for (int i=0; i < a.length; i++) {
    for (int j=0; j<a.length; j++) {
    a[i][j]=1+(int)(Math.round(99*Math.random()));
    System.out.print(a[i][j]+"\t");}
    System.out.println();}  //输出8*91--100随机数
    

    int max = a[0][0],min=a[1][1];                               //就是这两句
    int ki_max=2,ki_min=0,kj_max=2,kj_min=0;                                 
    for(int i=0;i<a.length;i++) {                                     //(2for(int j=0;j<a.length;j++) {
           if(max<=a[i][j]) {
            max=a[i][j];ki_max=i+1;kj_max=j+1;               
            }
            else 
            if(min>=a[i][j]){
            min=a[i][j] ;
            ki_min=i+1;
            kj_min=j+1;
            }
        }
    }                              
    System.out.println("min="+min+"\t"+"它在第"+ki_min+"行,第"+kj_min+"个");
    System.out.println("max="+max+"\t"+"它在第"+ki_max+"行,第"+kj_max+"个");                                    
    
  • 写回答

2条回答 默认 最新

  • 溪风沐雪 2022-04-12 11:07
    关注

    我简单改了一下,你的主要问题是a是在for循环里赋值的,赋值前全是0,int max = a[0][0],min=a[1][1]; 放前面那么min就等于0了,后续逻辑就不会再改变min的值了
    还有一个小问题是j的取值上限应该是a[i].length

    int[][] a = new int[8][9];
            
            int ki_max = 2, ki_min = 0, kj_max = 2, kj_min = 0;
            for (int i = 0; i < a.length; i++) {
                for (int j = 0; j < a[i].length; j++) {
                    a[i][j] = 1 + (int) (Math.round(99 * Math.random()));
                    System.out.print(a[i][j] + "\t");
                }
                System.out.println();
            } // 输出8*91--100随机数
            int max = a[0][0], min = a[1][1]; // 就是这两句
            
            for (int i = 0; i < a.length; i++) {
                for (int j = 0; j < a[i].length; j++) {
                    if (max <= a[i][j]) {
                        max = a[i][j];
                        ki_max = i + 1;
                        kj_max = j + 1;
                    } 
                    if (min >= a[i][j]) {
                        min = a[i][j];
                        ki_min = i + 1;
                        kj_min = j + 1;
                    }
                }
            }
            System.out.println("min=" + min + "\t" + "它在第" + ki_min + "行,第" + kj_min + "个");
            System.out.println("max=" + max + "\t" + "它在第" + ki_max + "行,第" + kj_max + "个");
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 4月22日
  • 已采纳回答 4月14日
  • 创建了问题 4月12日

悬赏问题

  • ¥15 无源定位系统的时差估计误差标准差
  • ¥15 请问这个代码哪里有问题啊
  • ¥20 python--version在命令端输入结果Python is not defined怎么办?还有pip不是exe格式是不是没安装成功?
  • ¥15 通过GaussianView进行结构微调消除虚频
  • ¥15 调用transformers库
  • ¥15 由于导出的数据名字中带有/,导致Matlab打不开,怎么办?
  • ¥15 新硬盘安装的程序总是崩溃,提示遇到错误
  • ¥15 openpcdet自制数据集评估bev精度和3d精度相同
  • ¥15 excel 上下按钮 显示行
  • ¥20 云卓h12pro 数传问题