注册 登录
编程论坛 JAVA论坛

求多个整数的和及平均值问题,求解

勤劳的猪 发布于 2018-03-19 13:15, 7029 次点击
题目:1、定义一个类Calculate ,其中有一个main方法。2、在main方法中,首先调用Scanner类,从键盘输入一个整数放到变量count中,count表示将要从键盘读入的整数个数,然后调用循环语句从键盘读入count个整数,将这count个整数求和,然后求出平均值。最后输出和及平均值。
这个代码哪里错了?是不是不对?运行时出现“Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
        at Calculate.main(Calculate.java:7)” 新手求大佬指点
import java.util.Scanner;
public class Calculate{
      static float next=0,sum=0,average=0;        
      public static void main(String args[]){
        Scanner sc=new Scanner(System.in);
        int count=sc.nextInt();//读入int型数据
        System.out.println(args[0]);
        String arg = args[0];
        while(!arg.equals(" "))
        {   
            next=Float.parseFloat(arg);
            sum=sum+next;
            
            if(count== args.length){
                break;
            }
            
        }
        average=sum/count;
        System.out.print("Sum="+sum+"\naverage="+average+"\n");
    }
}
12 回复
#2
疯狂的小a2018-03-19 14:30
程序代码:
package com.xiaoa.demo;

import java.util.Scanner;

public class Calculate {
    @SuppressWarnings("resource")
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int count = -1;
        for (;;) {
            try {
                System.out.println("请输入数据个数:");
                count = Integer.parseInt(sc.next());
                break;// 满足条件,跳出循环
            } catch (Exception e) {
                // 报错
                System.out.println("只能是整数个个数");
                continue;
            }
        }
        
        //定义数组
        int[] arr = new int[count];
        for (int i = 0; i < count; i++) {
            for(;;) {
                try {
                    System.out.printf("请输入第%d个数字:", i + 1);
                    arr[i] = sc.nextInt();
                    break;
                } catch (Exception e) {
                    // 报错
                    System.out.println("输入的只能是整数");
                    continue;
                }
            }
        }
        
        //求数组和
        int sum = getSum(arr);
        //求平均值
        float avg = getAvg(arr);
        
        System.out.printf("avg:%f\r\n",avg);
        System.out.printf("sum:%d",sum);

    }
   
    //求数组的平均值
    public static float getAvg(int[] arr) {
        int sum = getSum(arr);
        return sum/arr.length;
    }

    // 求数组的和
    public static int getSum(int[] arr) {
        int sum = 0;
        for (int i : arr) {
            sum += i;
        }
        return sum;
    }
}
#3
勤劳的猪2018-03-19 14:55
谢谢大佬,
#4
疯狂的小a2018-03-19 15:08
程序代码:
package com.xiaoa.demo;

import java.util.Scanner;

public class Calculate {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int count = -1;
        for (;;) {
            try {
                System.out.println("请输入数据个数:");
                count = Integer.parseInt(sc.next());
                break;// 满足条件,跳出循环
            } catch (Exception e) {
                // 报错
                System.out.println("只能是整数个个数");
                continue;
            }
        }
        
        //定义数组
        int[] arr = new int[count];
        for (int i = 0; i < count; i++) {
            for(;;) {
                try {
                    System.out.printf("请输入第%d个数字:", i + 1);
                    arr[i] = sc.nextInt();
                    break;
                } catch (Exception e) {
                    // 报错
                    System.out.println("输入的只能是整数");
                    continue;
                }
            }
        }
        
        //求数组和
        int sum = getSum(arr);
        //求平均值
        float avg = getAvg(arr);
        
        System.out.printf("avg:%f\r\n",avg);
        System.out.printf("sum:%d",sum);
        
        sc.close();

    }
   
    //求数组的平均值
    public static float getAvg(int[] arr) {
        int sum = getSum(arr);
        return sum/arr.length;
    }

    // 求数组的和
    public static int getSum(int[] arr) {
        int sum = 0;
        for (int i : arr) {
            sum += i;
        }
        return sum;
    }
}
忘记关闭资源了!!!罪过,罪过
#5
桃花岛主丶2018-03-20 00:59
public class Calculate {
    public static void main(String[] args) {
        System.out.println("请输入要计算的整数个数:");
        Scanner sc = new Scanner(System.in);
        int count =sc.nextInt();
        int []arr=new int[count];
        int sum=0;
        for (int i = 1; i < arr.length+1; i++) {
            System.out.println("请输入第"+i+"个整数:");
            int num=sc.nextInt();
            sum+=num;
        }
        System.out.println("和:"+sum);
        System.out.println("平均:"+sum*1.0/count);
    }
}
#6
勤劳的猪2018-03-20 08:09
好简洁啊,厉害了
#7
疯狂的小a2018-03-20 09:00
回复 5楼 桃花岛主丶
你输入中文试试
#8
桃花岛主丶2018-03-20 11:17
回复 7楼 疯狂的小a
啥?
#9
桃花岛主丶2018-03-20 11:53
回复 6楼 勤劳的猪
可以把数组去掉   循环中的arr.length换成count  
#10
疯狂的小a2018-03-20 14:02
回复 8楼 桃花岛主丶
只有本站会员才能查看附件,请 登录
#11
疯狂的小a2018-03-20 14:23
程序代码:
import java.util.Scanner;
public class Calculate {
    public static void main(String[] args) {
        System.out.println("请输入要计算的整数个数:");
        int count = new Scanner(System.in).nextInt();
        int sum = 0;
        for (int i = 1; i < count + 1; i++) {
            System.out.println("请输入第" + 1 + "个整数:");
            sum += new Scanner(System.in).nextInt();
        }
        System.out.println("和:" + sum + "\r\n平均:" + sum * 1.0 / count);
    }
}
#12
疯狂的小a2018-03-20 14:25
看看有没有人,还能减少行数的
#13
桃花岛主丶2018-03-20 20:26
回复 10楼 疯狂的小a
好吧 我只学了这么多  还不会别的
1