我有个小问题,关于接收成绩数量

我有个小问题,关于接收成绩数量

/**

* 从键盘接收数学成绩存放在数组中

* @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;

}

效果如图http://img1.sycdn.imooc.com//climg/5e4768ed081b240206650534.jpg

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回答
好帮手慕小脸 2020-02-15 14:53:31

同学你好,代码中的问题如下:

    1、一个方法中定义一个Scanner对象就可以了

  http://img1.sycdn.imooc.com//climg/5e4793b009f4e76806000225.jpg

    2、无需在main方法中new 数组来接收。

    http://img1.sycdn.imooc.com//climg/5e47944b09c001f104790174.jpg

    3、在main方法找到initscore方法时,带参数n(n代表存储的数量)。如下所示:

http://img1.sycdn.imooc.com//climg/5e4794bc0945241106620248.jpghttp://img1.sycdn.imooc.com//climg/5e4794f5099029c707230432.jpg

附上代码如下:

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;
			}

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • 提问者 慕嘟嘟 #1
    按照老师的改法 和题中要求的方法命名就不一样了,这个没影响的吗?
    2020-02-15 15:21:30
  • 好帮手慕小脸 回复 提问者 慕嘟嘟 #2
    同学你好,代码的实现是具有灵活性,所以方法命名不一样是没有任何影响的。 如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
    2020-02-15 15:32:40
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师