黑马程序员技术交流社区

标题: 看了半天不知道什么问题,希望大家帮忙看看 [打印本页]

作者: 李小锋    时间: 2012-11-25 21:10
标题: 看了半天不知道什么问题,希望大家帮忙看看
本帖最后由 李小锋 于 2012-11-25 21:53 编辑
  1. class Demo
  2. {
  3.         //定义一功能,通过给定分数,获取该分数对应的等级。
  4.         
  5.         public static String getLevel(int num)
  6.         {
  7.                 char level;
  8.                 if(num>=90 && num<=100)
  9.                         level = 'A';
  10.                 else if(num>=80 && num<=89)
  11.                         level = 'B';
  12.                 else if(num>=70 && num<=79)
  13.                         level = 'C';
  14.                 else if(num>=60 && num<=69)
  15.                         level = 'D';
  16.                 else
  17.                         level = 'E';

  18.                 return level;
  19.         }
  20.         public static void main(String[] args)
  21.         {
  22.                
  23.                 char ch = getLevel(60);
  24.                 System.out.println("level="+ch);
  25.         }
  26.         
  27. }
复制代码
编译不能通过,有不兼容类型
作者: 王震阳老师    时间: 2012-11-25 21:28
  1. class Demo
  2. {
  3.         //定义一功能,通过给定分数,获取该分数对应的等级。
  4.         
  5.         public static String getLevel(int num)///该函数的返回值时String类型的,
  6.         {
  7.                 char level;
  8.                 if(num>=90 && num<=100)
  9.                         level = 'A';
  10.                 else if(num>=80 && num<=89)
  11.                         level = 'B';
  12.                 else if(num>=70 && num<=79)
  13.                         level = 'C';
  14.                 else if(num>=60 && num<=69)
  15.                         level = 'D';
  16.                 else
  17.                         level = 'E';

  18.                 return level+"";//应为该函数要返回String,因此要把ch字符类型,加上一个空字符串使其提升至String类型。
  19.         }
  20.         public static void main(String[] args)
  21.         {
  22.                
  23.                 String ch = getLevel(60);//由于该返回值是String类型的,因此定义ch时,应该定义成String类型的。
  24.                 System.out.println("level="+ch);
  25.         }
  26. }
复制代码
楼主可能对java的基本数据类型(虽然String不属于)不是很熟悉,建议多看看毕老师的视频。已经改好。

回复Demo.jpg (39.77 KB, 下载次数: 24)

回复Demo.jpg

作者: madianguo    时间: 2012-11-25 21:28
本帖最后由 madianguo 于 2012-11-25 21:33 编辑

  1. <P>class Demo
  2. {
  3.         //定义一功能,通过给定分数,获取该分数对应的等级。
  4.         
  5.         public static String getLevel(int num)
  6.         {
  7.                 char level;
  8.                 if(num>=90 && num<=100)
  9.                         level = 'A';
  10.                 else if(num>=80 && num<=89)
  11.                         level = 'B';
  12.                 else if(num>=70 && num<=79)
  13.                         level = 'C';
  14.                 else if(num>=60 && num<=69)
  15.                         level = 'D';
  16.                 else
  17.                         level = 'E';</P>
  18. <P>                return level;
  19.         }
  20.         public static void main(String[] args)
  21.         {
  22.                
  23.                 char ch = getLevel(60);
  24.                 System.out.println("level="+ch);
  25.         }
  26.         
  27. }</P>
复制代码
你自己定义的level为char类型  返回的也是char类型 (  return level) 。所以返回值类型也应该为Char类型       public static Char getLevel(int num)

作者: 林庆松    时间: 2012-11-25 21:33
D:\java\test03>javac ForJi2.java
ForJi2.java:19: 错误: 不兼容的类型
                return level;
                       ^
  需要: String
  找到:    char
ForJi2.java:24: 错误: 不兼容的类型
                char ch = getLevel(60);
                                  ^
  需要: char
  找到:    String
2 个错误

public static Stirng getLevel(int num) 改成public static char getLevel(int num) 就行了


最后的代码是这样的:
class ForJi2
{
        //定义一功能,通过给定分数,获取该分数对应的等级。
        
        public static char getLevel(int num)
        {
                char level;
                if(num>=90 && num<=100)
                        level = 'A';
                else if(num>=80 && num<=89)
                        level = 'B';
                else if(num>=70 && num<=79)
                        level = 'C';
                else if(num>=60 && num<=69)
                        level = 'D';
                else
                        level = 'E';

                return level;
        }
        public static void main(String[] args)
        {
               
                char ch = getLevel(60);
                System.out.println("level="+ch);
        }
        
}


D:\java\test03>java ForJi2
level=D

作者: 杨卫腾    时间: 2012-11-25 21:34
本帖最后由 杨卫腾 于 2012-11-25 21:36 编辑

原因如下:
      一个是字符类型的, 一个是字符串类型的这样怎么会兼容呢。
  1. class Demo6
  2. {
  3.         //定义一功能,通过给定分数,获取该分数对应的等级。
  4.         
  5.         public static char getLevel(int num)//返回的要么是字符型   要么是字符串类型的,那么下边的就给成字符串就行了
  6.         {
  7.                 char level;
  8.                 if(num>=90 && num<=100)
  9.                         level = 'A';
  10.                 else if(num>=80 && num<=89)
  11.                         level = 'B';
  12.                 else if(num>=70 && num<=79)
  13.                         level = 'C';
  14.                 else if(num>=60 && num<=69)
  15.                         level = 'D';
  16.                 else
  17.                         level = 'E';

  18.                 return level;
  19.         }
  20.         public static void main(String[] args)
  21.         {
  22.                
  23.                 char ch = getLevel(60);
  24.                 System.out.println("level="+ch);
  25.         }        
  26. }
复制代码

作者: 郝少普    时间: 2012-11-25 21:39
从第五行开始,你定义的是 String 类型  ,
第七行    ,    level 定义确实 char 类型
第十九行,     返回的是 String类型, 显然不对
第二十四行,  类型
都是类型错误,  把第七行 改成
  1. String leve l;
复制代码

作者: 李小锋    时间: 2012-11-25 21:46
初来咋到,让大家见笑了,我会加油的{:soso_e130:},多谢大家的解答咯
作者: 李小锋    时间: 2012-11-25 21:52
王震阳 发表于 2012-11-25 21:28
楼主可能对java的基本数据类型(虽然String不属于)不是很熟悉,建议多看看毕老师的视频。已经改好。
...

好详细哦,看得出你很厉害,呵呵
作者: 转角~依然笑    时间: 2012-11-25 22:12
class Demo{
       //定义一功能,通过给定分数,获取该分数对应的等级。
      public static String getLevel(int num) {
              char level;
              if(num>=90 && num<=100)
                      level = 'A';
               else if(num>=80 && num<=89)
                      level = 'B';
               else if(num>=70 && num<=79)
                       level = 'C';
                else if(num>=60 && num<=69)
                        level = 'D';
                else
                        level = 'E';
                return level+"";
        }
        public static void main(String[] args){
                String str = getLevel(60);
                System.out.println("level="+str);
        }
}
作者: Fantasy_.    时间: 2012-11-25 22:24
本帖最后由 Fantasy_. 于 2012-11-25 22:32 编辑

import java.util.Scanner;
public class getLevel {
       public static void main(String[] args){
             Scanner input = new Scanner(System.in);
             getLevelOfNumber gl = new getLevelOfNumber();//创建读取分数的实例
             System.out.println("请输入您的分数:");
             int num = input.nextInt();                     //读取分数
             System.out.println("您的分数是:"+ num +"\n您的分数等级是:"+ gl.levelOfNumber(num));                  //打印分数跟等级
       }
}

      //把分数对应的等级封装起来
class getLevelOfNumber{
       private String level;         //用 private提高安全性 ,使得除 getLevelOfNumber类之外的类不能够直接调用level
       public String levelOfNumber(int n){             //String 是双引号("A")的。char是单引号('A')的。
              if (n >= 90 && n <= 100)
                    level = "A";
             else if (n >= 80 && n < 90)
                    level = "B";
             else if (n >= 70 && n < 80)
                    level = "C";
            else if (n >= 60 && n < 70)
                    level = "D";
            else
                    level = "E";
             return level;
        }
}

/*
char的写法:
class getLevelOfNumber{
          private char level;
          public char levelOfNumber(int n){
                 if (n >= 90 && n <= 100)
                        level = 'A';
                 else if (n >= 80 && n < 90)
                        level = 'B';
                 else if (n >= 70 && n < 80)
                        level = 'C';
                 else if (n >= 60 && n < 70)
                        level = 'D';
                 else
                        level = 'E';
                 return level;
       }
}
*/

作者: 转角~依然笑    时间: 2012-11-25 22:33

class Demo{
       //定义一功能,通过给定分数,获取该分数对应的等级。
      public static String getLevel(int score) {
              String level=null;
         char c=score>=90 && score<=100 ? 'A':score>=80 && score<90 ? 'B': score>=70 && score<80 ? 'C': score>=60 && score>=60 && score<70 ? 'D':'E';
                  switch(c){
                 case'A':
                         level="优秀";
                         break;
                 case'B':
                         level="良好";
                         break;
                 case'C':
                         level="中等";
                         break;
                 case'D':
                         level="及格";
                         break;
                 case'E':
                         level="不及格";
                         break;
             }
                        return level;
        }
        public static void main(String[] args){
                String str =getLevel(60);
                System.out.println("level="+str);
        }
}





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