`
successfulroof
  • 浏览: 74329 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

解决JAVA switch case 里面case A, A不能为 变量的问题

 
阅读更多

今天有个朋友问我Java switch case里面的用法,由于 switch case 和 if-else 工作原理不一样,可能某些公司会避免使用if-else而采用switch case的方法来解决问题。

在jdk1.6 中:

int i= "test".hashcode();

String s = "test";

switch (s.hashcode()) {

  case i :System.out.println("bad");

}//这种方法是不支持的。编译根本通过不了,因为 i 是一个变量

 

经过网上一翻查找,在jdk1.7中可能会支持这个功能。

但是问题就不能这么简单的解决,因为现在很多企业都没有在使用1.7的版本。

没事在电脑面前想出来一个办法,应该可以行得通在jdk1.6中解决 case不能使用变量的方法

上代码

public class TestHash {

 /**
  * Comments:
  * @author Jacky
  * Chinese :
  * @param args
  */
 public static void main(String[] args) {
  

   String s = "test";

 

   int i= "test".hashCode();

 

  switch ( ("test1".hashCode()== i ? 1:1) *("test2".hashCode() == i ? 2:1) *(s.hashCode() == i ? 3 :1) ){


             case   1 :System.out.println("not good");break;


             case   2 : System.out.println("not good"); break;


             case   3  : System.out.println("good"); break;

 

             default : System.out.print(4); break;


  }//switch


 }// main

 

}//class

 

ok,我运行了下,运行结果是打印 good

看来这样是行得通的,而且也避免了case后面使用变量;但是效率应该还算行吧。比If-else应该好一点。

望各位大侠指点。

还有一种办法,枚举类型也可以行得通!

分享到:
评论

相关推荐

    Java switch case 语句.docx

    Java的switch case语句是一种控制流程结构,用于根据变量的值执行不同的代码块。它提供了一种更简洁的方式来替代多个if...else if...else语句。以下是对switch case语句的详细解释: 1. **基本语法**: switch语句...

    switch+case语句例子成绩

    `switch-case` 语句是 Java 语言中的一个控制流结构,它允许程序根据不同的条件分支执行不同的代码块。在给定的例子中,`switch-case` 语句被用来根据学生的成绩分配相应的等级,如 A、B、C、D 或 F。 首先,我们...

    Java switch case数据类型原理解析

    Java switch case 语句是 Java 语言中的一种控制流语句,用于判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。switch 语句的语法格式如下: switch(expression){ case value : //语句 break; //...

    switch case.docx

    Java 语言中的 `switch case` 语句是一种流程控制结构,用于执行多个条件分支中的一个。这个语句常用于简化基于不同条件执行不同操作的代码。在给定的例子中,`switch case` 被用来根据学生成绩等级输出相应的评价。...

    Java-Java Switch语句详解教程

    Java Switch语句是Java编程语言中的一个控制流程结构,它提供了多路选择,允许程序根据变量的值执行不同的代码块。在Java中,Switch语句主要用于替代一系列的if...else if...else语句,使代码更加简洁、易读。本教程...

    switch语句在java和c#中的区别

    因此,当 `Grade / 10` 等于 7 时,`case 7:` 和 `case 6:` 都会被执行,导致输出 "你的成绩为:C" 和 "你的成绩为:D",这是由于 C# 不支持所谓的“贯穿”(fallthrough)行为,即在每个 `case` 后面都需要显式地...

    Arduino项目开发 Control_switchCase2_switchCase2.pdf

    在给定的文件 `Control_switchCase2_switchCase2.pdf` 中,示例代码展示了如何使用 `switch` 语句处理串行输入,并通过控制 LED 的亮灭来响应不同字符。以下是对这个知识点的详细解释: 首先,`switch` 语句通常...

    java代码-Switch case

    在这个例子中,`dayOfWeek`的值为3,所以`switch`语句会匹配到`case 3`,输出"Wednesday",然后执行`break`退出`switch`。 值得注意的是,从Java SE 7开始,`switch`语句支持`String`类型的表达式,这使得在处理...

    在java switch中使用String作为分支条件

    为了解决这一问题,Java 7引入了一个新特性——支持直接在`switch`语句中使用`String`类型的变量。本文将详细介绍如何在Java中利用`switch`语句与字符串进行条件判断,并提供一种在Java早期版本中通过自定义枚举(`...

    基于C语言实现switch case语句(源码)

    在main函数中,定义了一个字符变量grade,用于存储输入的成绩等级...如果用户输入的成绩等级不在'A'、'B'、'C'、'D'、'F'范围内,则执行default语句,输出"Invalid grade!"。 使用break语句终止switch case语句的执行。

    PHP程序设计-3期(KC016) 2.6.1条件控制switch-case常见问题.docx

    解决方法是确保`case`后的值在编写时已经确定,或者在`switch`之前先将变量转换为常量。 问题2:不会使用`break`来中断 `break`语句在`switch-case`结构中用于跳出当前`switch`块,防止执行后续的`case`。如果忘记...

    计算机二级C语言 考点18 switch-case 语句.pdf

    因为 switch 语句只能用于整型表达式,而 float 类型的变量 w 不能用作 switch 语句的表达式。 问题 2 中,该程序的输出结果是 A) a=2,b=1。因为 switch 语句中,case 0: b++; 不会被执行,因为 x=1,不等于 0。...

    Arduino项目开发 Control_switchCase_switchCase.pdf

    在 Arduino 项目开发中,`switch-case` 语句是一个重要的控制结构,它允许程序根据变量的不同值执行不同的代码块。这个例子展示了如何在 Arduino 上使用 `switch-case` 结构来处理模拟输入(如光电传感器)的数据,...

    计算机二级C语言考点18switch-case语句.pdf

    3. 若a、b、c1、c2、x、y均是整型变量,正确的switch语句是switch(a+b);、switch(a*a+b*b)等,因为switch语句的控制表达式必须是整型的。 4. 下列程序段的输出结果是passwarn,因为switch语句的执行流程是从上往下...

    switch不能字符串比较解决方法

    ### switch不能字符串比较解决方法 在Java编程语言中,`switch`语句是一种常见的选择结构,用于基于不同的条件执行不同的代码块。然而,在早期版本的Java(如Java 5及之前)中,`switch`语句只能用于整型变量、枚举...

    Case_Switch.rar_case switch labview_labview swit_labview switch_

    通过分析"Case_Switch.vi",用户不仅可以了解Case和Switch的工作原理,还能学习到如何组织和设计具有复杂逻辑的LabVIEW程序。 总结来说,"Case_Switch.rar"中的案例提供了使用LabVIEW中的Case和Switch结构进行条件...

    c语言switch case语句.docx 代码

    - `case`后的每个`value`必须是常量表达式,不能是变量或运行时计算的结果。 - `default`是可选的,当没有匹配的`case`时提供一个备选方案。 - `break`是可选的,但为了避免“贯穿”现象,通常在每个`case`后都应...

    java变量的生命周期与作用域

    Java 变量的生命周期与作用域 Java 变量的生命周期是指变量从定义到销毁的整个过程,而作用域是指变量可以被访问的范围。在 Java 中,变量的生命周期和作用域是密切相关的。 变量的生命周期可以分为三个阶段:定义...

Global site tag (gtag.js) - Google Analytics