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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 懒人不是懒 于 2015-7-14 16:49 编辑

/*根据考试成绩获取学生分数对应的等级。
    90~100 A
    80~89   B
    70~79   C
    60~69   D
    60以下   E
        
        需求:根据不同的分数给出不同的评价
        明确:1、有结果,char型
              2、有未知数,int型
        */
class var
{
        public static void main(String[] args){
        fenshu(99);
                System.out.println(fenshu(99));}
        public static char fenshu(int x){
        char lv;
        if(90<=x&&x<=100)
                lv='A';
     else   if(80<=x&&x<=89)
                lv='B';
        else if(70<=x&&x<=79)
                lv='C';
        else if(60<=x&&x<=69)
                lv='D';
        else if(x<60)
                lv='E';

        return lv;
                }
                                }
最后编译的时候提示:var1.java:32: 错误: 可能尚未初始化变量lv。
代码和老师给的差不多,就变量名不一样,怎么就出问题了?

11 个回复

倒序浏览
就算你编译成功也没结果,你只是返回了一个char,没输出
我之前也写过,不过我是直接打印的结果你看一看
  1. import java.util.Scanner;
  2. class DemoT

  3. {
  4.         public static void main(String[] args)
  5.         {
  6.         Scanner sc = new Scanner(System.in);
  7.         System.out.println("请输入学生成绩:");
  8.                 int x=sc.nextInt();
  9.                 if (x>100||x<0)
  10.                 {
  11.                 System.out.println("输入的成绩不正确!");
  12.                 }
  13.                 else if (x<=100&&x>=90)
  14.                 {
  15.                         System.out.println("A等");
  16.                 }
  17.                 else if (x<=89&&x>=80)
  18.                 {
  19.                         System.out.println("B等");
  20.                 }
  21.                 else if (x<=79&&x>=70)
  22.                 {
  23.                         System.out.println("C等");
  24.                 }
  25.                 else if (x<=69&&x>=60)
  26.                 {
  27.                         System.out.println("D等");
  28.                 }
  29.                 else
  30.                         System.out.println("E等");
  31.         }
  32. }
复制代码


回复 使用道具 举报
我知道没输出,但编译都不成功就郁闷了。我写着程序和老师给程序就变量名不一样。
回复 使用道具 举报
蔡锐 发表于 2015-7-14 16:02
就算你编译成功也没结果,你只是返回了一个char,没输出
我之前也写过,不过我是直接打印的结果你看一看


我知道没输出,但编译都不成功就郁闷了。我写着程序和老师给程序就变量名不一样。
回复 使用道具 举报
懒人不是懒 发表于 2015-7-14 16:19
我知道没输出,但编译都不成功就郁闷了。我写着程序和老师给程序就变量名不一样。 ...

你这个lv默认没有赋值,如果你给的int x 超过了你判定的范围,lv就没有赋值,你需要多加一个判断,就和我的代码一样
回复 使用道具 举报
  1. public static void main(String[] args) {
  2.                 System.out.println(fenshu(99));
  3.         }

  4.         public static char fenshu(int x) {
  5.                 char lv;
  6. //                if (90 <= x && x <= 100)
  7. //                        lv = 'A';
  8. //                if (80 <= x && x <= 89)
  9. //                        lv = 'B';
  10. //                if (70 <= x && x <= 79)
  11. //                        lv = 'C';
  12. //                if (60 <= x && x <= 69)
  13. //                        lv = 'D';
  14. //                if (x < 60)
  15. //                        lv = 'E';
  16. //                return lv;
  17.                 switch(x/10){
  18.                         case 9:
  19.                                 lv = 'A';
  20.                                 break;
  21.                         case 8:
  22.                                 lv = 'B';
  23.                                 break;
  24.                         case 7:
  25.                                 lv = 'C';
  26.                                 break;
  27.                         case 6:
  28.                                 lv = 'D';
  29.                                 break;
  30.                         default:
  31.                                 lv = 'E';
  32.                                 break;
  33.                 }
  34.                 return lv;
  35.         }
复制代码
先给char一个‘ ’,或者用上面的swtich语句。为什么不给空过不了我也不清楚。
回复 使用道具 举报
蔡锐 发表于 2015-7-14 16:30
你这个lv默认没有赋值,如果你给的int x 超过了你判定的范围,lv就没有赋值,你需要多加一个判断,就和我 ...

明白了,谢谢。
回复 使用道具 举报
  1. package L78Z;

  2. public class studentLevlDemo {

  3.             public static void main(String[] args){
  4.                 fenshu(99);
  5.                  System.out.println(fenshu(99));}
  6.            public static char fenshu(int x)
  7.                    {
  8.              
  9.                 char lv = 0;
  10.                         if(90<=x&&x<=100)
  11.                         lv='A';
  12.                  else if(80<=x&&x<=89)
  13.                         lv='B';
  14.                  else if(70<=x&&x<=79)
  15.                         lv='C';
  16.                  else if(60<=x&&x<=69)
  17.                         lv='D';
  18.                  else if(x<60)
  19.                         lv='E';

  20.                 return lv;
  21.                }
  22. }
复制代码
回复 使用道具 举报
给个赋值呗。
回复 使用道具 举报
当不满足条件时是没有返回值的,,你的函数又需要返回值。。所以要定超出范围时的返回值
回复 使用道具 举报
我觉得是和static标识有关系。
回复 使用道具 举报
你把lv的定义语句放在类的成员变量里就可以了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马