| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 599 人关注过本帖
标题:switch 百思不得其解的问题
只看楼主 加入收藏
continue24
Rank: 2
等 级:论坛游民
帖 子:38
专家分:96
注 册:2012-11-16
结帖率:80%
收藏
已结贴  问题点数:20 回复次数:9 
switch 百思不得其解的问题
这是我的代码,很简单。但是问题就在于,输入大写字母如A时它不会执行case后面的语句,但是输入小写字母a时可以。怎么也想不通问什么,求大家帮帮忙解答一下,谢谢!
import java.util.Scanner;
public class numberone {
    public static void main(String[] args) {
        System.out.print("请输入成绩等级:");
        Scanner a=new Scanner(System.in);
        char k=a.next().charAt(0);
        switch(k)
        {
        case 'A'|'a': System.out.println("该等级对应的成绩范围为85~100");
        break;
        case 'B'|'b': System.out.println("该等级对应的成绩范围为70~84");
        break;
        case 'C'|'c':System.out.println("该等级对应的成绩范围为60~69");
        break;
        case 'D'|'d':System.out.println("该等级对应的成绩范围为60以下");
        break;
        default:System.out.println("请输入正确的成绩等级!");   
        }
    }
}
搜索更多相关主题的帖子: public import 字母 
2014-12-19 21:46
continue24
Rank: 2
等 级:论坛游民
帖 子:38
专家分:96
注 册:2012-11-16
收藏
得分:0 
大家帮帮忙吧%>_<%我怎么也想不通为什么会这样……

一直想要成长着……
2014-12-19 22:33
hhwz
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:87
帖 子:687
专家分:4502
注 册:2011-5-22
收藏
得分:20 
程序代码:

 System.out.print("请输入成绩等级:");
     Scanner a=new Scanner(System.in);
     char k=a.next().charAt(0);
     switch(k)
     {
     case 'A':
     case 'a': System.out.println("该等级对应的成绩范围为85~100");
     break;
     case 'B':
     case 'b': System.out.println("该等级对应的成绩范围为70~84");
     break;
     case 'C':
     case 'c':System.out.println("该等级对应的成绩范围为60~69");
     break;
     case 'D':
     case 'd':System.out.println("该等级对应的成绩范围为60以下");
     break;
     default:System.out.println("请输入正确的成绩等级!");    

2014-12-20 10:04
continue24
Rank: 2
等 级:论坛游民
帖 子:38
专家分:96
注 册:2012-11-16
收藏
得分:0 
可是我的为什么不能呢?
import java.util.Scanner;
public class yi {

    public static void main(String[] args) {
        char a='\0';
        try {        
             a=(char)System.in.read();
            }
        catch (Exception e)
           {        
            System.out.println(e);        
            }   
        sys(a);
        }  
    private static void sys(char  grade){        
        switch(grade)
        {            
       case 'A'|'a' :System.out.println(grade+" is 85~100");   
        break;           
        case 'B'|'b':System.out.println(grade+" is 70~84");   
        break;            
        case 'C'|'c':System.out.println(grade+" is 60~69");   
        break;           
        case 'D'|'d':System.out.println(grade+" is<60");
        break;            
        }
        }
}
这个代码为什么就可以?怎么也想不明白。

一直想要成长着……
2014-12-20 12:34
hhwz
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:87
帖 子:687
专家分:4502
注 册:2011-5-22
收藏
得分:0 
switch只适用于等号,不能直接用小于、大于等表达式
2014-12-20 15:49
continue24
Rank: 2
等 级:论坛游民
帖 子:38
专家分:96
注 册:2012-11-16
收藏
得分:0 
回复 5楼 hhwz
我没有用大于小于这种啊,我觉得我和那个代码唯一的区别就是输入的写法不一样而已,switch那里都是一样的,但是我的就不行

一直想要成长着……
2014-12-20 18:41
hhwz
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:87
帖 子:687
专家分:4502
注 册:2011-5-22
收藏
得分:0 
好吧 简单点
System.out.println('A'|'a');你打印看看这个 就知道为什么你那个会错了
2014-12-20 22:47
continue24
Rank: 2
等 级:论坛游民
帖 子:38
专家分:96
注 册:2012-11-16
收藏
得分:0 
回复 7楼 hhwz
谢谢!虽然我还是不明白,默默的再去琢磨吧⊙﹏⊙

一直想要成长着……
2014-12-22 19:18
hhwz
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:87
帖 子:687
专家分:4502
注 册:2011-5-22
收藏
得分:0 
'A'|'a' 你打印这个 出的值是char a的 数字表示
所以只有输入a时才是正确的
2014-12-22 21:12
C_fans
Rank: 2
等 级:论坛游民
帖 子:8
专家分:14
注 册:2014-12-23
收藏
得分:0 
我来告诉你吧,A的ASCII值是65也就是1000001,a的ASCII值是97也就是1100001,两个二进制的"|'(或)操作就等于97也就是a,所以'A'|'a'其实就是等于a,你的明白???
2014-12-23 09:56
快速回复:switch 百思不得其解的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025559 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved