老师,你好!麻烦帮忙看下这个代码有什么问题?谢谢!

老师,你好!麻烦帮忙看下这个代码有什么问题?谢谢!


import java.util.Scanner;


public class HomeWorkTest3 {

/**

* 修改指定位置的数据

* @param f

* @param index

* @param newScore

*/

public void update(float[] f,int index,float newScore) {

Scanner sc=new Scanner(System.in);

f[index]=newScore;

System.out.println("修改后:");

System.out.println("成绩为:");

for(float n:f) {

System.out.print(n+"  ");

}

}


public static void main(String[] args) {

HomeWorkTest3 hwt3=new HomeWorkTest3();

Scanner sc=new Scanner(System.in);

float[] f= {98,65,75,83,87};

int index=0;

float newScore=0;

System.out.println("修改前:");

System.out.println("成绩为:");

for(float n:f) {

System.out.print(n+"  ");

}

System.out.println();

do {

System.out.println("请输入要修改数据的位置(从0开始):");

try{

index=sc.nextInt();

}catch(java.util.InputMismatchException e) {

System.out.println("输入的数据类型有误,请重新输入!");

sc.next();

}

}while(index<0 | index>f.length-1);

System.out.println("请输入新数据:");

try {

newScore = sc.nextInt();

}catch(java.util.InputMismatchException e) {

System.out.println("输入的数据类型有误,请重新输入!");

sc.next();

}

hwt3.update(f,index,newScore);

}

}


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
好帮手慕酷酷 2019-11-22 10:47:10

同学你好,对于同学的两个问题,可以采用如下思路,这里可以编写一个方法来判断输入的是否是数字,如果不是数字,可以进行给出提示信息,返回false,如果是数字,返回true,具体如下:

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

然后在主方法中调用该方法,进行循环判断。

修改后的代码如下:

import java.util.Scanner;

public class HomeWorkTest3 {

	/**
	 * 修改指定位置的数据
	 *
	 * @param f
	 * @param index
	 * @param newScore
	 */

	public void update(float[] f, int index, float newScore) {

		Scanner sc = new Scanner(System.in);

		f[index] = newScore;

		System.out.println("修改后:");

		System.out.println("成绩为:");

		for (float n : f) {

			System.out.print(n + "  ");

		}

	}

	public static void main(String[] args) {

		HomeWorkTest3 hwt3 = new HomeWorkTest3();
		Scanner sc = new Scanner(System.in);
		

		float[] f = { 98, 65, 75, 83, 87 };

		int index = 0;

		float newScore = 0;

		System.out.println("修改前:");

		System.out.println("成绩为:");

		for (float n : f) {

			System.out.print(n + "  ");

		}
		System.out.println();

		do {
			System.out.println("请输入要修改数据的位置(从0开始):");

			while (!hwt3.isNum(sc)) {
				sc = new Scanner(System.in);
			}
			index = sc.nextInt();

		} while (index < 0 || index > f.length - 1);

		System.out.println("请输入新数据:");
		while (true) {
			if (hwt3.isNum(sc)) {
				newScore = sc.nextInt();
				hwt3.update(f, index, newScore);
				break;
			}
			sc = new Scanner(System.in);
			System.out.println("输入的数据类型有误,请重新输入");
		}
	}

	private boolean isNum(Scanner scanner) {
		if (scanner.hasNextInt()) {
			System.out.println("输入的是数字");
			return true;
		} else {
			System.out.println("输入的不是数字,请重新输入");
			return false;
		}
	}

}

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


好帮手慕酷酷 2019-11-21 19:02:53

同学你好,代码完成的不错,但有一个小建议,可以将|修改为逻辑或||,可以提高代码执行效率,因为||运算符也是短路运算符,只要运算符左边表达式的值为true,则直接返回结果true,运算符右边的表达式不会被执行。因为这个是只要其中一个是成立的,则结果就是成立的。

而|运算符,不管前面的条件判断是否为true或false,后面的判断条件都需要执行。

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

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

  • 提问者 慕运维9017649 #1
    老师,你好!您说的修改运算符我知道了,但是这段代码运行的时候存在两个问题:1、index输入非数字,接下来就会运行输入newScore的环节;2、index正常输入,newScore输入非数字会运行到修改后成绩的结果显示。这两个问题我找不到解决方案
    2019-11-21 21:12:48
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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