“Java:可能尚未初始化变量arr”错误
问题描述:
编译这个程序出现“Java:可能尚未初始化变量arr”错误,请问怎么解决呢?
相关代码:
import java.util.Scanner;
public class Application {
public static void main(String[] args) {
Application app = new Application();
ArrayTools at = new ArrayTools();
while (true){
app.displayMenu();
System.out.println("请输入对应的数字进行操作:");
Scanner scanner = new Scanner(System.in);
float[] arr;
int num = scanner.nextInt();
switch (num){
case 1:
arr = at.initScore();
case 2:
System.out.println("数学平均成绩为:" + at.average(arr));
case 3:
System.out.println("成绩大于85分的人数:" + at.count(arr));
case 4:
{
System.out.println("修改前:");
System.out.println("成绩为:");
at.displayAllScore(arr);
System.out.println("请输入要修改数据的位置(从0开始):");
int index = scanner.nextInt();
System.out.println("请输入新数据:");
int data = scanner.nextInt();
System.out.println("修改后:");
System.out.println("成绩为:");
at.update(arr, index, data);
at.displayAllScore(arr);
}
}
}
}
/**
* 显示主菜单
*/
public void displayMenu(){
System.out.println("*******************************************");
System.out.println("\t\t1--初始化数学成绩");
System.out.println("\t\t2--求成绩的平均值");
System.out.println("\t\t3--统计成绩大于85分的人数");
System.out.println("\t\t4--修改指定位置处的成绩");
System.out.println("\t\t5--打印输出所有成绩");
System.out.println("\t\t0--退出");
System.out.println("*******************************************");
}
}
相关代码:
import java.util.Scanner;
public class ArrayTools {
/**
* 初始化数组元素,数组的长度和元素均由键盘输入
* @return 返回初始化后的数组
*/
public float[] initScore(){
System.out.println("请输入要存储的数学成绩的数量");
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
float[] arrScore = new float[num];
int count = 1;
for (float e:
arrScore) {
System.out.println("请输入第" + count + "个数据:");
e = sc.nextFloat();
count++;
}
return arrScore;
}
/**
* 求数组中元素的平均值
* @param f 需要处理的数组
* @return 返回平均值
*/
public float average(float[] f){
float sum = 0;
for (float e:
f) {
sum += e;
}
float avg = sum / f.length;
return avg;
}
/**
* 统计成绩大于85分的人数
* @param f 需要统计成绩的数组
* @return 返回符合要求的人数
*/
public int count(float[] f){
int cnt = 0;
for (float e:
f) {
if(e>85){
cnt++;
}
}
return cnt;
}
/**
* 修改数组指定元素的值
* @param f 需要修改的数组
* @param index 需要修改的数组元素下标
* @param newScore 需要的值:新的成绩
*/
public void update(float[] f, int index, float newScore){
f[index] = newScore;
}
/**
* 打印输出数组里所有的成绩
* @param f 数组参数
*/
public void displayAllScore(float[] f){
int count = 0;
for (float e:
f) {
System.out.print(e + "\t");
count++;
if (count == 5){
System.out.println();
count = 0;
}
}
}
}
17
收起
正在回答 回答被采纳积分+1
1回答
java工程师2020版
- 参与学习 人
- 提交作业 9393 份
- 解答问题 16556 个
综合就业常年第一,编程排行常年霸榜,无需脱产即可学习,北上广深月薪过万 无论你是未就业的学生还是想转行的在职人员,不需要基础,只要你有梦想,想高薪
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星