黑马程序员技术交流社区

标题: 一个小问题引发的一场血案,求教? [打印本页]

作者: innovator    时间: 2016-5-14 01:16
标题: 一个小问题引发的一场血案,求教?
新人一枚,往JAVAEE方向学习,目前在学习前期简单的JAVA SE视频教程。编写了一个小的程序,运行时遇到了问题,想向诸位请教,谢谢支持!
下面是程序代码,主要问题是运行之后,只能输入一次数据,判断之后就自动跳出。为什么这个循环编译没问题,运行起来出问题了。
还有就是Scanner在循环中的使用有哪些方法和需要注意的问题呢?

/*需求:键盘录入成绩,判断并输出成绩的登记。希望可以录入多个成绩进行判断
                90-100 优
                80-89  良
                70-79  中
                60-69  及格
                0-59   差

*/
import java.util.*;
class Test1_If {
        public static void main(String[] args) {
                Scanner input = new Scanner(System.in);
                //需求:键盘录入一个成绩,判断并输出成绩的等级
                int a = 0;
                do        {
                        System.out.println("请输入学生的成绩:(范围在0-100之间)");
                        int x = input.nextInt();
               //判断输入成绩所属等级,并输出
                        if (x >= 90 && x < 100) {
                                System.out.println("优");
                        }else if (x >= 80 && x < 89) {
                                System.out.println("良");
                        }else if (x >= 70 && x <79) {
                                System.out.println("中");
                        }else if (x >= 60 && x < 69) {
                                System.out.println("及格");
                        }else if (x >= 0 && x < 59) {
                                System.out.println("差");
                        }else {
                                System.out.println("对不起,您录入的成绩有误!");
                    }    a++ ;
                 
                 }while (a == 3);
       }
}

循环程序.png (204.17 KB, 下载次数: 19)

主要是运行之后的问题

主要是运行之后的问题

作者: r1503882525    时间: 2016-5-14 06:53
因为你用了 do while。就是不论结果是true,false。都先执行一次。
其次边界问题没解决。比如100,89,79,69,59.都是出错的。这说明你没测试边界数字。
作者: liucuifu    时间: 2016-5-14 08:12
用while 和for循环去做
作者: woshijingke    时间: 2016-5-14 08:34
用while 和for循环去做
作者: 小红花    时间: 2016-5-14 09:25
来看看。。。。
作者: innovator    时间: 2016-5-14 09:38
r1503882525 发表于 2016-5-14 06:53
因为你用了 do while。就是不论结果是true,false。都先执行一次。
其次边界问题没解决。比如100,89,79, ...

嗯,边界问题真没注意到,谢啦。
不过有个疑问,为什么do while 的判断条件也有,为什么只执行一次就跳出了呢?{:2_30:}
作者: innovator    时间: 2016-5-14 09:40
小红花 发表于 2016-5-14 09:25
来看看。。。。

只看多不好,你应该给点指导。共同思考学习嘛
作者: innovator    时间: 2016-5-14 09:42
liucuifu 发表于 2016-5-14 08:12
用while 和for循环去做

嗯 ,while和for是可以做,但我想知道为什么do while 这次执行有问题呢?
这样才能更清楚的明白不同循环在实际使用时的区别啊
作者: 爱柯真是太好了    时间: 2016-5-14 16:14
因为你while判断的结果是false   同时又基于do while循环的特性  所以只运行了一次
作者: HackSon    时间: 2016-5-14 16:39
你循环的判断条件错了,判断结果是false还怎么循环啊
作者: hycold    时间: 2016-5-14 16:43
a==3?a<=3?
作者: innovator    时间: 2016-5-15 09:21
hycold 发表于 2016-5-14 16:43
a==3?a

疏忽大意




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2