A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

自己今天已经编写了几遍,总是报错,自己给自己找错实在是个煎熬的事情啊,请大家帮帮忙,谢谢啦
程序如下:(/*根据键盘录入的整数输出对应数组的平均值。具体要求如下:
定义方法static void avg(int[] arr,int id),方法内要求完成:获取指定数组arr元素值的平均值,并在控制台打印输出“id为*的学员平均分为:@”(其中*为指定整数id,@为获取到的平均值)
定义main方法,方法内完成:
1.  定义3个int数组arr1,arr2,arr3,3个数组内的元素分别为:{85,64,92},{44,97,71}, {77,73,75}
2. 获取一个键盘录入的整数id
3. 如果id=1,传递arr1和id调用avg(int[] arr,int id)方法;如果id=2,传递arr2和id调用avg(int[] arr,int id) 方法;如果id=3,传递arr3和id调用avg(int[] arr,int id) 方法;如果id=0,提示“程序结束”并结束整个程序;如果id为其他值,在控制台打印输出"找不到该学员!" (要求:程序输入0结束程序,否则可以一直输入并判断对应id的平均分)
*/)
import java.util.Scanner;
public class KaoShi0202{
public static void main (String [] args){
                int []arr1 = {85,64,92};
                int []arr2 = {44,97,71};
                int []arr3 = {77,73,75};
                //创建Scanner对象
                Scanner sc = new Scanner(System.in);
                //提示语句
                System.out.println("请您输入一个整数");
                while (true){
                        int id =sc.nextInt();
                        if(id!=0){
                                switch (id){
                                        case 1:
                                        avg(arr1,id);
                                        case 2:
                                        avg(arr2,id);
                                        case 3:
                                        avg(arr3,id);
                                        default:
                                        System.out.println("找不到该学员");
                       
                                }
                        }
                        break;
                        System.out.println("结束程序");
                }
               
        }
public static void avg(int [] arr,int id){
                int sum;
                for (int i=0;i<arr.length;i++){
                       
                         sum = sum +arr[i];
                       
                }
}
}

6 个回复

倒序浏览
对于其他大神来说,也许是个小CASE,我是个菜鸟,请求帮助啊
回复 使用道具 举报
调用avg()后要break;不然还会判断其它 的;avg()方法里没有算平均值,也少了打印:id为*的学员平均分为:@;sum要赋初 值:0,你报错应该就是 这个 赋值的问题
回复 使用道具 举报 1 0
CreScert 来自手机 中级黑马 2016-9-23 23:01:00
板凳
你确定switch没写break是自己故意的吗?
回复 使用道具 举报
zhoubinjian 答得很全面  1. 自定义方法 avg里sum没有初始化;  2.   你自定义方法要么return 一个值, 要么打印,默认return,  因为你返回值类型是void,所以是要打印   3,你没有求平均值, 我提醒你,一定要主要sum要转换成double, 要么直接定义double类型,要么除的时候先乘1.0,  不然你除后不是想要的 结果,是一个int值,4.case 后不加break的话会产生case穿透,执行下一个case;  我也是进辅导班的学渣,一起努力吧
回复 使用道具 举报
聆听沿途风景 来自手机 中级黑马 2016-9-24 09:15:36
地板
谢谢各位,程序是复制过来的,丢了一部分╮( ̄▽ ̄"")╭,马上改
回复 使用道具 举报
switch 后的case要有break,不然会穿透;break要放在else中,程序顺序执行,if块结束直接运行break退出循环了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马