我有个小问题,关于接收成绩数量
/**
* 从键盘接收数学成绩存放在数组中
*
* @return 表示成绩的数组
*/
public float[] initscore() {
int n = 0;
Scanner sc = new Scanner(System.in);
System.out.println("请输入要存储的数学成绩的数量:");
n = sc.nextInt();
float[] a = new float[n];
Scanner sc1 = new Scanner(System.in);
for (int i = 0; i < a.length; i++) {
System.out.println("请输入第" + (i + 1) + "个数据:");
try {
a[i] = sc1.nextFloat();
} catch (InputMismatchException e) {
System.out.println("输入的数据格式有误,不能为非数字!");
sc1.next();
i--;
}
}
return a;
}
我想把这段代码接收成绩数量那部分写到主方法里,结果我改了半天还运行不了了,老师帮忙看看
/**
* 从键盘接收数学成绩存放在数组中
*
* @return 表示成绩的数组
*/
public float[] initscore() {
int n = 0;
float[] a = new float[n];
Scanner sc1 = new Scanner(System.in);
for (int i = 0; i < a.length; i++) {
System.out.println("请输入第" + (i + 1) + "个数据:");
try {
a[i] = sc1.nextFloat();
} catch (InputMismatchException e) {
System.out.println("输入的数据格式有误,不能为非数字!");
sc1.next();
i--;
}
}
return a;
}
效果如图
switch (input) {
case 1:
// 初始化数学成绩
System.out.println("请输入要存储的数学成绩的数量:");
try{
n = sc.nextInt();
}catch(InputMismatchException e) {
System.out.println("输入的数据格式有误,不能为非数字!");
sc.next();
}
a = new float[n];
a = sm.initscore();
break;
正在回答 回答被采纳积分+1
同学你好,代码中的问题如下:
1、一个方法中定义一个Scanner对象就可以了
2、无需在main方法中new 数组来接收。
3、在main方法找到initscore方法时,带参数n(n代表存储的数量)。如下所示:
附上代码如下:
public float[] initscore(int n) { Scanner sc = new Scanner(System.in); float[] a = new float[n]; for (int i = 0; i < a.length; i++) { System.out.println("请输入第" + (i + 1) + "个数据:"); try { a[i] = sc.nextFloat(); } catch (InputMismatchException e) { System.out.println("输入的数据格式有误,不能为非数字!"); sc.next(); i--; continue; } } return a; }
switch (input) { case 1: // 初始化数学成绩 System.out.println("请输入要存储的数学成绩的数量:"); try { n = sc.nextInt(); } catch (InputMismatchException e) { System.out.println("输入的数据格式有误,不能为非数字!"); sc.next(); } a = dm.initscore(n); break; }
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
- 参与学习 人
- 提交作业 3802 份
- 解答问题 11489 个
本阶段带你迈入Java世界,学习Java必备基础知识,基础语法、面向对象思想以及常用工具类的使用。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星