黑马程序员技术交流社区
标题:
跪求编译中报错的原因,多谢,多谢
[打印本页]
作者:
聆听沿途风景
时间:
2016-9-23 22:46
标题:
跪求编译中报错的原因,多谢,多谢
自己今天已经编写了几遍,总是报错,自己给自己找错实在是个煎熬的事情啊,请大家帮帮忙,谢谢啦
程序如下:(/*根据键盘录入的整数输出对应数组的平均值。具体要求如下:
定义方法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];
}
}
}
作者:
聆听沿途风景
时间:
2016-9-23 22:47
对于其他大神来说,也许是个小CASE,我是个菜鸟,请求帮助啊
作者:
zhoubinjian
时间:
2016-9-23 22:58
调用avg()后要break;不然还会判断其它 的;avg()方法里没有算平均值,也少了打印:id为*的学员平均分为:@;sum要赋初 值:0,你报错应该就是 这个 赋值的问题
作者:
CreScert
时间:
2016-9-23 23:01
你确定switch没写break是自己故意的吗?
作者:
qihaichengtian
时间:
2016-9-24 00:48
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
谢谢各位,程序是复制过来的,丢了一部分╮( ̄▽ ̄"")╭,马上改
作者:
17721165644
时间:
2016-9-24 09:46
switch 后的case要有break,不然会穿透;break要放在else中,程序顺序执行,if块结束直接运行break退出循环了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2