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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 江南小道士 中级黑马   /  2013-11-29 11:53  /  1524 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 江南小道士 于 2013-11-29 16:32 编辑

public static char getLevel(int num)
        {
                if(num>=90 && num<=100)
                        return 'A';
                if(num>=80 && num<=89)//前面可以不用else,上行return;结束
                        return 'B';
                if(num>=70 && num<=79)
                        return 'C';
                if(num>=60 && num<=69)
                        return 'D';
                if(num>=0 && num<=59)
                        return 'E';
        }

谢谢各位坛友耐心解答~~~

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

11 个回复

倒序浏览
本帖最后由 努力ing 于 2013-11-29 12:12 编辑

public static char getLevel(int num)
        {
                if(num>=90 && num<=100)
                        return 'A';
                if(num>=80 && num<=89)//前面可以不用else,上行return;结束
                        return 'B';
                if(num>=70 && num<=79)
                        return 'C';
                if(num>=60 && num<=69)
                        return 'D';
                if(num>=0 && num<=59)
                         return 'E';
                else
                        return 'o';

        }
else// 按我的理解这是给一个默认的返回值,逻辑上没有考虑全面导致直接报错


        }
这是修改,这和swith有点相似,因为到了最后给一个默认返回值

评分

参与人数 1技术分 +1 收起 理由
简★零度 + 1

查看全部评分

回复 使用道具 举报
如果全部不符合if条件你叫JVM如何处理、、、、
回复 使用道具 举报 1 0
楼主,是这样的,num是int型变量,程序只判断了int型的正数部分,编译器认为,如果传入负数实参,程序代码并没有给出相应的判断和解决办法,所以,报错,楼主可以用if……else if()……else结构
回复 使用道具 举报
有返回值的函数,要在函数最后一行写个return,这是必须的。
回复 使用道具 举报
public static char getLevel(int num)
        {
                if(num>=90 && num<=100)
                        return 'A';
                if(num>=80 && num<=89)//前面可以不用else,上行return;结束
                        return 'B';
                if(num>=70 && num<=79)
                        return 'C';
                if(num>=60 && num<=69)
                        return 'D';
                if(num>=0 && num<=59)
                        return 'E';
        }
return;//这样写的话也会编译错误——非法的类型开始

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
貌似是用if...else...可以。
回复 使用道具 举报
江南小道士 发表于 2013-11-29 13:06
貌似是用if...else...可以。

其实那里最后隐含着一个else,你可以这样想 你写了if{}  然后又写了else  然后else之后要做什么忘了写
回复 使用道具 举报
如果调用这个方法时传递的参数不是0到100之间的数,加入是个大于100的数,那函数要求有个chai类型的字符返回值,该返回哪个呢?
所以,你可以提前对这个数判断一下,或者最后加上else,返回一个字符。
  1.         public static char getLevel(int num)
  2.     {
  3.                 if(num <=100 && num >=0) {  // 判断是否是0到100之间的数
  4.             if(num>=90 && num<=100)
  5.                     return 'A';
  6.             if(num>=80 && num<=89)
  7.                     return 'B';
  8.             if(num>=70 && num<=79)
  9.                     return 'C';
  10.             if(num>=60 && num<=69)
  11.                     return 'D';
  12.             if(num>=0 && num<=59)
  13.                     return 'E';
  14.                 }
  15.                 return ' '; // 不是0到100之间的数。可以用异常来做,如果不是0到100之间的数,就提示异常信息并作出相应解决办法
  16.     }
复制代码

或者
  1.         public static char getLevel(int num)
  2.     {
  3.                
  4.             if(num>=90 && num<=100)
  5.                     return 'A';
  6.             if(num>=80 && num<=89)
  7.                     return 'B';
  8.             if(num>=70 && num<=79)
  9.                     return 'C';
  10.             if(num>=60 && num<=69)
  11.                     return 'D';
  12.             if(num>=0 && num<=59)
  13.                     return 'E';
  14.             else{                   // 如果不满足以上所有条件,也要给个结果吧!
  15.                     return ' ';
  16.             }
  17.                
  18.     }
复制代码

用异常来做的话,自定义一个异常。
  1. public class Test {

  2.         public static void main(String[] args) {
  3.                 System.out.println(getLevel(145));
  4.         }

  5.         public static char getLevel(int num)
  6.     {
  7.                 if(num >= 100 || num <= 0){
  8.                         throw new OutOfBoundsException("数字越界了 ");  // 当整数不是在0到100之间时,会抛出此异常。
  9.                 }
  10.                        
  11.             if(num>=90 && num<=100)
  12.                     return 'A';
  13.             if(num>=80 && num<=89)
  14.                     return 'B';
  15.             if(num>=70 && num<=79)
  16.                     return 'C';
  17.             if(num>=60 && num<=69)
  18.                     return 'D';
  19.             else
  20.                     return 'E';
  21.                        
  22.     }
  23. }


  24. class OutOfBoundsException extends RuntimeException {
  25.        
  26.         OutOfBoundsException(String str){
  27.                 super(str);
  28.         }
  29. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
如果num<0  或者 num>100,则所有if都不符合,那么if中的return都读不到。而该方法要求有返回值,所以在所有if之外  添加return,以保证在读不到if语句中return时,该方法依然有return。

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
孔雀东南飞 发表于 2013-11-29 15:58
如果num100,则所有if都不符合,那么if中的return都读不到。而该方法要求有返回值,所以在所有if之外  添加 ...

非常感谢,明白了,谢谢
回复 使用道具 举报
张天昊76 发表于 2013-11-29 13:59
如果调用这个方法时传递的参数不是0到100之间的数,加入是个大于100的数,那函数要求有个chai类型的字符返 ...

解答非常详细,谢啦!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马