A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

新人一枚,往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, 下载次数: 25)

主要是运行之后的问题

主要是运行之后的问题

11 个回复

倒序浏览
因为你用了 do while。就是不论结果是true,false。都先执行一次。
其次边界问题没解决。比如100,89,79,69,59.都是出错的。这说明你没测试边界数字。
回复 使用道具 举报
用while 和for循环去做
回复 使用道具 举报
用while 和for循环去做
回复 使用道具 举报
来看看。。。。
回复 使用道具 举报
r1503882525 发表于 2016-5-14 06:53
因为你用了 do while。就是不论结果是true,false。都先执行一次。
其次边界问题没解决。比如100,89,79, ...

嗯,边界问题真没注意到,谢啦。
不过有个疑问,为什么do while 的判断条件也有,为什么只执行一次就跳出了呢?{:2_30:}
回复 使用道具 举报

只看多不好,你应该给点指导。共同思考学习嘛
回复 使用道具 举报
liucuifu 发表于 2016-5-14 08:12
用while 和for循环去做

嗯 ,while和for是可以做,但我想知道为什么do while 这次执行有问题呢?
这样才能更清楚的明白不同循环在实际使用时的区别啊
回复 使用道具 举报
因为你while判断的结果是false   同时又基于do while循环的特性  所以只运行了一次
回复 使用道具 举报
你循环的判断条件错了,判断结果是false还怎么循环啊
回复 使用道具 举报
a==3?a<=3?
回复 使用道具 举报

疏忽大意
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马