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

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

1
<br>

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

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

修改后的代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
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 = { 9865758387 };
 
        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下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

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