精华内容
下载资源
问答
  • 以下是对c语言switch中break语句的作用进行了详细的分析介绍,需要的朋友可以过来参考下
  • 枚举类型在switch语句中的用法枚举类型在switch语句中的用法
  • 一次机缘巧合,idea中调试代码的时候,跳到了.class文件中,刚好调试的代码是switch,于是就有了下面的内容:对于Java语言来说,Java 7之前,switch语句中的条件表达式的类型只能是与整数类型兼容的类型,包括...

    一次机缘巧合,在idea中调试代码的时候,跳到了.class文件中,刚好调试的代码是switch,于是就有了下面的内容:


    对于Java语言来说,在Java 7之前,

    switch语句中的条件表达式的类型只能是与整数类型兼容的类型,包括基本类型char、byte、short和int,与这些基本类型对应的封装类Character、Byte、Short和Integer,

    还有枚举类型。这样的限制降低了语言的灵活性,使开发人员在需要根据其他类型的表达式来进行条件选择时,不得不增加额外的代码来绕过这个限制。为此,Java 7放宽

    了这个限制,额外增加了一种可以在switch语句中使用的表达式类型,那就是很常见的字符串,即String类型。


    源代码:

    [java]  view plain copy


    1. public class TestSwitch {  
    2.     public static void main(String[] args) {  
    3.         test("a");  
    4.     }  
    5.   
    6.     public static void test(String type) {  
    7.         switch (type) {  
    8.         case "a":  
    9.             System.out.println("aa");  
    10.             break;  
    11.         case "b":  
    12.             System.out.println("bb");  
    13.   
    14.             break;  
    15.         }  
    16.     }  
    17.   
    18. }  
    [java]  view plain copy


    1. public class TestSwitch {  
    2.     public static void main(String[] args) {  
    3.         test("a");  
    4.     }  
    5.   
    6.     public static void test(String type) {  
    7.         switch (type) {  
    8.         case "a":  
    9.             System.out.println("aa");  
    10.             break;  
    11.         case "b":  
    12.             System.out.println("bb");  
    13.   
    14.             break;  
    15.         }  
    16.     }  
    17.   
    18. }  


    编译后的.class文件:

    [java]  view plain copy


    1. import java.io.PrintStream;  
    2.   
    3. public class TestSwitch  
    4. {  
    5.   
    6.     public TestSwitch()  
    7.     {  
    8.     }  
    9.   
    10.     public static void main(String args[])  
    11.     {  
    12.         test("a");  
    13.     }  
    14.   
    15.     public static void test(String type)  
    16.     {  
    17.         String s;  
    18.         switch((s = type).hashCode())  
    19.         {  
    20.         default:  
    21.             break;  
    22.   
    23.         case 97// 'a'  
    24.             if(s.equals("a"))  
    25.                 System.out.println("aa");  
    26.             break;  
    27.   
    28.         case 98// 'b'  
    29.             if(s.equals("b"))  
    30.                 System.out.println("bb");  
    31.             break;  
    32.         }  
    33.     }  
    34. }  


    从代码可以看出,java虚拟机实际上是将字符串转化为哈希值,还是利用整数类型兼容的类型来进行判断,但是哈希值可能存在值相等的情况,所以又对字符串进行了2次比较。

    总结:switch能判断字符串是因为将字符串做了哈希运算,本质上还是数字,java虚拟机没有变化,只是编译器发生了变化。


     不过值得一提的是,通过这件事,给我们提供了一种新的思路,通过查看编译后的java文件,来探究底层实现方法。

       

    展开全文
  • C语言中continue可以用于switch语句中吗?

    千次阅读 多人点赞 2020-02-27 18:59:34
    continue和break虽然都可以用于表结束循环,但是二者还是用很大的区别。今天下午突发奇想那么continue可以用于switch中吗...

      背景交代:continue和break虽然都可以用于表结束循环,但是二者还是用很大的区别。今天下午突发奇想那么continue可以用于switch中吗,俗话说的好实践是检验真理的唯一标准,说干就干。这里先梳理一下二者的区别,知道二者的区别直接看第三部分。

    一、continue

      continue是表示结束本次循环,继续执行下一次循环为了方便理解举个代码看一下(为了记忆和理解continue暂时不直接在switch中使用)

    #include <stdio.h>
    int main()
    {
    	int i;
    	for(i=1;i<10;i++)
    	{
    		if(i==3) continue;
    		printf("%d",i);
    	}
    	return 0;
    }
    

    运行结果
    在这里插入图片描述
    可以看到结果中没有数字3,是因为当i等于3的时候执行了continue所以结束了当次循环,继续下一个循环

    二、break

      break是表示直接结束循环执行后面的代码(为了记忆和理解采用和执行continue相同的代码)

    #include <stdio.h>
    int main()
    {
    	int i;
    	for(i=1;i<10;i++)
    	{
    		if(i==3) break;
    		printf("%d",i);
    	}
    	return 0;
    }
    

    运行结果
    在这里插入图片描述
    输出结果只有1和2,因为当i等于3的时候执行了break结束了整个循环。

    三、continue到底可以用于switch语句中吗?

      直接在Dev-C++中上代码,编译,运行。

    #include <stdio.h>
    int main()
    {
    	int a=1;
    	switch(a)
    	{
    		case 1:
    			printf("111");
    			continue;
    		case 2:
    			printf("222");
    		default:
    			continue;
    	}
    	return 0;
    }
    

    运行结果报错,说明此时continue无法使用于switch中
    编译结果
      但是这并不能说明continue不能用于switch语句中。当我们在该switch外加上for循环语句的时候continue可以在switch中出现。代码如下:

    #include <stdio.h>
    int main()
    {
    	int a=1, i;
    	for(i=0;i<10;i++)
    	{
    		switch(a)
    		{
    			case 1:
    				printf("111\n");
    				continue;
    			case 2:
    				printf("222\n");
    			default:
    				continue;
    		}
    	}
    	return 0;
    }
    

    【运行结果】
    在这里插入图片描述

    那么到底是什么原因呢?

      我们大多数人在switch中直接使用continue发生错误后,就下定结论continue无法在switch中使用的法是错误的。
      通过百度百科和查询其他资料得知原来switch是属于判断选择代码,是用于控制流程流转,而无法像for、do…while、while一样实现循环。所以在switch中无法使用continue实现结束。
      但是当外面有循环语句时可以用循环语句的特性来结束该case。感谢“小笨孩521”留言指出该问题。


    本人承诺以上文章为本人编写,绝非复制粘贴。写在这里一是为了防止以后自己将知识点遗忘,二是为了和大家分享我自己对这个知识点的理解和认识。如果我的文章中有错误希望看到后可以指正,感激不尽!

    展开全文
  • 本文介绍php中的switch语句的用法,它跟其他语句中的switch用法差不多的,但注意有有一个break语句。 PHP中switch语句的标准语法: switch (expression) { case label1: code to be executed if expression = ...
  • 下面小编就为大家带来一篇浅谈选择结构if语句和switch语句的区别。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • 主要介绍了Java中switch判断语句典型使用实例,本文直接给出代码实例,忘记switch语法时特别有用,复制修改即可使用,需要的朋友可以参考下
  • 1.出现问题: xception in thread "main" java.lang.Error: 无法解析的...switch (command) { case 'Buy': quantity += 5; balance -= 20; break; case 'SELL': quantity -= 5; ...

    1.出现问题:

    xception in thread "main" java.lang.Error: 无法解析的编译问题:
    	字符常量无效
    

    2.出错的代码:

    switch (command) {
    			case 'Buy':
    				quantity += 5;
    				balance -= 20;
    				break;
    			case 'SELL':
    				quantity  -= 5;
    				balance  += 15;
    		}
    

    3.解决方法:因为switch语句是进行字符串比较,所以case中的值要用双引号
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • c++语句switch语句The error: case label not within a switch statement occurs in C language with switch case statement, when switch (variable/value) statement is terminated by the semicolon (;...

    c++语句switch语句

    The error: case label not within a switch statement occurs in C language with switch case statement, when switch (variable/value) statement is terminated by the semicolon (;).

    错误:当switch(变量/值)语句由分号( ; )终止时,C语言中的case标签使用switch case语句以C语言出现。

    Example:

    例:

    #include <stdio.h>
    
    int main(void) {
    	
    	int choice = 2;
    	
    	switch(choice);
    	{
    	    case 1:
    	        printf("Case 1\n");
    	        break;
    	    case 2:
    	        printf("Case 2\n");
    	        break;	    
    	    case 3:
    	        printf("Case 3\n");
    	        break;	    
    	    case 4:
    	        printf("Case 4\n");
    	        break;	    
    	    default:
    	        printf("Case default\n");
    	}
    	
    	return 0;
    }
    
    

    Output

    输出量

    prog.c: In function ‘main’:
    prog.c:9:6: error: case label not within a switch statement
          case 1:
          ^~~~
    prog.c:11:10: error: break statement not within loop or switch
              break;
              ^~~~~
    prog.c:12:6: error: case label not within a switch statement
          case 2:
          ^~~~
    prog.c:14:10: error: break statement not within loop or switch
              break;
              ^~~~~
    prog.c:15:6: error: case label not within a switch statement
          case 3:
          ^~~~
    prog.c:17:10: error: break statement not within loop or switch
              break;
              ^~~~~
    prog.c:18:6: error: case label not within a switch statement
          case 4:
          ^~~~
    prog.c:20:10: error: break statement not within loop or switch
              break;
              ^~~~~
    prog.c:21:6: error: ‘default’ label not within a switch statement
          default:
          ^~~~~~~
    
    

    How to fix?

    怎么修?

    See the statement switch(choice); it is terminated by semicolon (;) – it must not be terminated. To fix this error, remove semicolon after this statement.

    参见语句switch(choice); 它以分号( ; )终止–一定不能终止。 要解决此错误,请在此语句后删除分号。

    Correct code:

    正确的代码:

    #include <stdio.h>
    
    int main(void) {
    	
    	int choice = 2;
    	
    	switch(choice)
    	{
    	    case 1:
    	        printf("Case 1\n");
    	        break;
    	    case 2:
    	        printf("Case 2\n");
    	        break;	    
    	    case 3:
    	        printf("Case 3\n");
    	        break;	    
    	    case 4:
    	        printf("Case 4\n");
    	        break;	    
    	    default:
    	        printf("Case default\n");
    	}
    	
    	return 0;
    }
    
    

    Output

    输出量

    Case 2
    
    
    

    翻译自: https://www.includehelp.com/c-programs/case-label-not-within-a-switch-statement-error-in-c.aspx

    c++语句switch语句

    展开全文
  • 循环语句中嵌套的switch语句中使用break语句和continue语句。break语句只会跳出switch语句,但仍会执行循环体中switch语句后面的语句。然后继续下一次循环。而continue语句跳出switch语句后,会直接执行下一次...
  • 本篇文章是对如何利用switch语句进行字符统计的方法进行了详细的分析介绍,需要的朋友参考下
  • 1、default语句可以放在switch语句中的任何位置,不会影响程序的执行流程。 2、建议default语句使用时放在语句末尾,如果放在语句中,最好带上break关键字,否则会造成case穿透现象。 3、如果每条case语句之后没有...
  • * * * * C语言switch语句 教学案例分析 思儿 本人的作业分享至百度文库仅供参考 * 2 目录 4 2 3 7 5 6 教材分析 学情分析 1 教学目标 教学重点难点 8 教法学法 教学内容与环节 板书设计 效果预测 * 2 本次教学选定的...
  • &nbsp; &nbsp;...故而,continue语句只能用于循环语句中,而switch case语句为多分支选择语句,不是循环语句,所以在switch case 语句中是不能使用continue 关键字的(除非把continue关键字...
  • switch(c)语句中c可以是int、long、char、unsigned int等类型,唯独不可以是float类型 我百度搜到的比较容易理解的解释如下: 一、不加break就不会跳出switch结构,不管后面条件是否符合都会执行,直到遇到第一个...
  • switch 语句用于基于不同条件执行不同动作。本文给大家介绍phpswitch语句的用法实例详解,涉及到switch用法方面的知识点,对switch用法感兴趣的朋友通过本文一起学习吧
  • switch语句中使用break???

    千次阅读 2017-05-25 17:20:28
    break是跳出循环使用的。而在switch语句中使用switch语句是结束switch语句。比如:switch(x){ case 1: System.out.println("这是一楼"); break; case 2: System.out.println("这是二楼"); bre
  • switch语句中default用法详解

    万次阅读 多人点赞 2017-02-26 15:39:22
    当年学C语言switch开关语句的时候,很多人会告诉你它是这么用的:switch(表达式){ case常量表达式1: 语句1;break; case常量表达式2: 语句2;break; … case常量表达式n: 语句n;break; default: 语句n+1;...
  • if 语句 用 if 语句可以构成分支结构,它根据给的条件进行判定,以决定执行哪个分支程序段。 C 语言的 if 语句有三种基本形式 第一种形式: if(条件表达式) { 语句1; } if(条件表达式) { 语句1; } 这种形式...
  • if语句 、switch语句 、for循环、break、continue、while、do-while总结 if语句 对比if语句switch语句 1、if语句作用的数据类型:boolean类型。而switch语句作用的类型:byte,short,int,char,String。 2、编码...
  • 1.switch语句中跳转到某个case上,并不是先一个个case去检查是否和switch中的常量一致,而是直接跳转到满足条件的那个 case上。(此处应该是编译器进行了优化)2.switch语句中的continue和break是针对switch来说的,...
  • #include int main(int argc, char **argv) { int i; for(i=1; i; i++) { switch(i) { case 1:printf("12345\n");break; case 2:printf("123456\n");break; } }
  • 毋庸置疑,在switch case 语句中不能使用continue 关键字。continue语句的作用是跳出本次循环,转入执行下一次循环。故而,continue语句只能用于循环语句中,而switch case语句为多分支选择语句,不是循环语句,所以...
  • 主要介绍了java中switch case语句需要加入break的原因解析的相关资料,需要的朋友可以参考下
  • if语句和switch语句的选择与区别

    万次阅读 多人点赞 2019-01-13 15:40:44
    if语句和Switch语句的选择 if选择结构 基本if选择结构: 处理单一或组合条件的情况 if-else选择结构:处理简单的条件分支情况 多重if选择结构:处理复杂的条件分支情况 嵌套if选择结构:用于较为复杂的流程控制 ...
  • switch语句

    2019-02-26 14:48:40
    switch语句也是其他语言普遍使用的一种流控制语句。 ECMAScript中switch语句的语法与其他基于C语言非常接近,如下所示: switch (expression){ case value: statement break; case value: statement break...
  • switch语句不加break

    千次阅读 2020-05-21 11:28:37
    不加break就不会跳出switch结构,不管后面条件是否符合都会执行,直到遇到第一个...如果不加break,代码会从那开始执行,一直执行到最后,所以不符合case的语句也会被执行。 声明:如有类同纯属意外,谢谢! ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 289,680
精华内容 115,872
关键字:

在switch语句中