黑马程序员技术交流社区

标题: 这个小程序怎么回事? [打印本页]

作者: zhiyuan0932    时间: 2014-9-16 10:03
标题: 这个小程序怎么回事?
已知学生成绩以100分为满分,共分5个等级:A,B,C,D,E。
   90~100为等级A,80~89为等级B,70~79为等级C,
   60~69为等级D,0~59为等级E。
   要求定义一个成绩变量,当成绩变化时,可直接知道该成绩对应的等级。
   例如:当成绩为100时,该学生的等级时A。else if(x>=90&x<=100)*/
       
class demo
{
        public static void getLevel(int x)
        {
                char level;
                if(x>=90&x<=100);
                level='A';
                else if(x>=80&x<90)
                level='B';
                else if(x>=70&x<80)
                level='C';
                else if(x>=60&x<70)
                level='D';
                else
                     level='E';
                return level;

        }
        public static void main(String[] args)
        {
                char ch=getLevel(38);
                System.out.println("level="+ch);
        }
}
运行结果显示有if,没else??明明有啊????
作者: 敏敏好学    时间: 2014-9-16 10:41
本帖最后由 敏敏好学 于 2014-9-16 10:43 编辑

1 、if(x>=90&x<=100);   这句话后面多写了一个分号。2、void是不能返回值的  
3、没有写返回值类型

作者: 不系之舟王    时间: 2014-9-16 12:16
楼主代码有错误,首先, if(x>=90&x<=100);,if后没有“;”,再者,getlevel方法楼主定义为void,既然为空返回值,又何来return??把void改为char就好了
作者: hailong    时间: 2014-9-16 12:30
楼上正解
作者: MeryStyle    时间: 2014-9-16 12:45
可以考虑使用switch……case语句。
作者: 黑马-胡明    时间: 2014-9-16 13:18
楼主的这个if -else-if语句的格式使用错误。其一、if右边的参数列表后不应该出现“;”;其二、你写的分明是带参函数,可以getLevel(int x)前面是void无返回值类型;其三、if-else语句内也并未出现return 返回int x;
给你讲一个简单的方法,你把getLevel(int x)中的参数去掉,在if-else语句中写:System.out.println("A");然后B/C/D/``
部分代码如下:  public static void getLevel()
        {
      
                if(x>=90&x<=100);
                System.out.println("A");
                else if(x>=80&x<90)
              System.out.println("B");
               ··································

作者: 许愿じ☆VE杰    时间: 2014-9-16 14:07
楼上正解
作者: happyto1021    时间: 2014-9-16 14:10
楼上正解
作者: bayshier    时间: 2014-9-16 14:10
楼上正解!!!!
作者: zhappy    时间: 2014-9-16 14:22
用switch。。。case。。。结构,会简单一点
作者: quq947115876    时间: 2014-9-16 14:24
楼上正解!
作者: daoqin    时间: 2014-9-16 14:29
多一个;号,程序不会执行下面的条件语句
作者: zhappy    时间: 2014-9-16 14:35
public class Br01 {

        /**
         * @param args
         */
        public static void main(String[] args) {
                int chengji = 59;
                String str = dengJi(chengji);
                System.out.println(str);

        }
       
        public static String dengJi(int x)
        {
                int tmp = x/10;
                String str = "";
                switch (tmp) {
                case 9:
                        str = "A";
                        break;
                case 8:
                        str = "B";
                        break;
                case 7:
                        str = "C";
                        break;
                case 6:
                        str = "D";
                        break;

                default:
                        str = "E";
                        break;
                }
                return str;
        }

}
作者: JTANISME    时间: 2014-9-16 19:15
zhappy 发表于 2014-9-16 14:35
public class Br01 {

        /**

貌似没考虑100
作者: zhappy    时间: 2014-9-16 19:26
JTANISME 发表于 2014-9-16 19:15
貌似没考虑100

不好意思把100忽略了,在前边加一个
case 10:
case 9:
作者: zhiyuan0932    时间: 2014-9-17 12:18
不系之舟王 发表于 2014-9-16 12:16
楼主代码有错误,首先, if(x>=90&x

恩恩,说的很对!找到根源了!
作者: 梦里听传说    时间: 2014-9-17 12:29
          public static void getLevel(int x)
      {
              char level;
              if(x>=90&x<=100)
              level='A';
              else if(x>=80&x<90)
              level='B';
              else if(x>=70&x<80)
              level='C';
              else if(x>=60&x<70)
              level='D';
              else
                   level='E';
              System.out.println(level);

      }
      public static void main(String[] args)
      {
              getLevel(38);
            
      }
}

楼主可以这么做 改动很小




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