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

求大神告知代码错在哪里

package p;

public class pric {


public static void main(String[] args) {

// TODO Auto-generated method stub

int[] scores={61,148, 23, 4, 74, 13,  20} ;

int i=0,j=0,max=scores[i],min=scores[j],sum=0;

float avg=0;

for(;i<6;i++,j++) {

sum=sum+scores[i];

if(scores[i]<scores[i+1]) {

max=scores[i+1];

if(scores[j]<scores[j+1]) {

min=scores[j];

}

}

}

avg=sum/7;

System.out.println("数组中的最大值"+max);

System.out.println("数组中的最小值"+min);

System.out.println("数组中的元素总和"+sum);

System.out.println("数组中的平均值"+avg);

}

}


正在回答

9 回答

sum=sum+scores[i];


if(scores[i]<scores[i+1]) {

max=scores[i+1];

按你这个循环来 1  ,3 ,   1  ,  2   取的是2 不是最大,这个只是两个相邻数比大小且最终就是取最后两位数里的最大值,同理最小值也是一样。

0 回复 有任何疑惑可以回复我~
你的最大、最小值的比较逻辑弄错了,i和i+1比较,只会调换这两者的位置。例如第一次循环比较0和1的大小,
第二次循环比较的是1和2的大小,只是相邻位置的两两换位,起不到把最大值冒泡出来的作用。还有就是
你的if语句嵌套了if语句,这俩个比较应该在同一个层级,不存在嵌套关系。我修改后的代码如下:
public class HelloWorld {
    public static void main(String[] args) {

            int[] scores={61,148, 23, 4, 74, 13,  20} ;

            int i=0,j=0,max=scores[0],min=scores[0],sum=0;

            float avg=0;

            for(;i<6;i++,j++) {

                sum=sum+scores[i];

                if(max>scores[i]) {

                    max=scores[i];}

                if(min<scores[j]) {

                        min=scores[j];

                    }

                }
        avg=sum/7;

        System.out.println("数组中的最大值"+max);

        System.out.println("数组中的最小值"+min);

        System.out.println("数组中的元素总和"+sum);

        System.out.println("数组中的平均值"+avg);
            }

        }


0 回复 有任何疑惑可以回复我~

int[] nums = { 61, 23, 4, 74, 13, 148, 20 };

int max = nums[0];

int min = nums[0];

double sum = 0;

double avg = 0;


for (int i = 0; i < nums.length; i++) {

// 如果当前值大于max,则替换max的值

if (nums[i] > max) {

max = nums[i];

}

if (nums[i] < min) {

min = nums[i];

}

sum += nums[i];

}

avg = sum / nums.length;


System.out.println("最大值:" + max);

System.out.println("最小值:" + min);

System.out.println("求和:" + sum);

System.out.println("平均:" + avg);


0 回复 有任何疑惑可以回复我~

看不懂你写的,冒泡不像冒泡,找最值又显得麻烦,代码繁琐

0 回复 有任何疑惑可以回复我~

这样子好像第7个没有比较,当i为6时就不会执行循环了

0 回复 有任何疑惑可以回复我~

avg=sum/7;

System.out.println("数组中的最大值"+max);

System.out.println("数组中的最小值"+min);

System.out.println("数组中的元素总和"+sum);

System.out.println("数组中的平均值"+avg);

不可以放在类外

if(scores[i]<scores[i+1]) {

max=scores[i+1];

if(scores[j]<scores[j+1]) {

min=scores[j];

貌似是起不到排序作用的

0 回复 有任何疑惑可以回复我~

public class pric{


    public static void main(String[] args) {

    // TODO Auto-generated method stub

        int[] scores={61,148, 23, 4, 74, 13,  20} ;

        int i=0,max=scores[0],min=scores[0],sum=0;

        float avg=0;

        for(;i<scores.length;i++) {

            sum=sum+scores[i];

            if(max<scores[i]) {

                max=scores[i];

            }

            if(min>scores[i]) {

                min=scores[i];

            }

        } 

    avg=sum/7;

    System.out.println("数组中的最大值"+max);

    System.out.println("数组中的最小值"+min);

    System.out.println("数组中的元素总和"+sum);

    System.out.println("数组中的平均值"+avg);

    }

   

}


0 回复 有任何疑惑可以回复我~

我也是小白,试了不行不要打我哈,嘎嘎嘎嘎~~~~

0 回复 有任何疑惑可以回复我~

int max=scores[0],min=scores[0],sum=0;

float avg=0;

for(int i=0;i<6;i++) {

sum=sum+scores[i];


if(max<scores[i]) {

max=scores[i];

 

if(min>scores[i]) {

min=scores[i];

我认为应该是这样的,你试试

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Java入门第一季(IDEA工具)升级版
  • 参与学习       1163078    人
  • 解答问题       17551    个

0基础萌新入门第一课,从Java环境搭建、工具使用、基础语法开始

进入课程

求大神告知代码错在哪里

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信