我必须使用一个定义这样的枚举的库:
public static enum LibVal {
VAL_1,
VAL_2,
VAL_3;
}
Run Code Online (Sandbox Code Playgroud)
我把这个枚举作为一个方法参数:
public void libCallback(LibVal val){
//.... some implementation
}
Run Code Online (Sandbox Code Playgroud)
为什么Java的禁止使用的switch
与LibVal
内部枚举libCallback
的方法?但是,如果lib已将其枚举声明为非静态,则可以使用.这是一个令人困惑的,因为这个SO答案说明,确实没有区别......
编辑:
正如bobkilla所述:我在我的交换机内尝试了LibVal.VAL_1,应该允许.我提供了一个不起作用的代码示例!
class TestClassForEnum {
public static enum TestEnum{ ONE, TWO; }
}
class WhichUsesEnumInsideMethod{
//completely unrelated to TestClassForEnum.TestEnum!!!
public static final int ONE = 0x1282
void doSomethingWithEnum(TestEnum e){
//here I cannot switch:
//FORBIDDEN BY JAVA
switch (e) {
case TestEnum.ONE:
//...
}
//Cannot USE EITHER, because ONE is a static final …
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用switch语句使其在文本框中键入特定单词时将显示该车的可用模型
例如
如果用户输入"Volkswagen",它应该回应"可用型号是Beetle和Polo"
但由于某种原因它没有工作可以任何人建议我为什么?
这是我到目前为止的代码,
<form action="switch.php" method="post">
<input type="text" name="cars" id="cars" />
<input type="submit" />
<?php
$i = $_POST;
?>
<?php
switch ($i) {
case "Volkswagen":
echo "The available models are Beetle and Polo";
break;
case "Renault":
echo "The Available models are Megane and Clio";
break;
case "Land Rover":
echo "The Available models are Range Rover Sport and Defender";
break;
}
?>
</form>
Run Code Online (Sandbox Code Playgroud)
编辑:
我现在有点卡住我试图使用带有下拉框的这个开关语句,并且不太确定如果有人可以帮助我让它们一起工作那么我可以如何让它们一起工作
这是我的工作开关和工作下拉框的代码.
<form action="">
<select name="cars">
<option value="Volkswagen">Volkswagen</option>
<option value="Renault">Renault</option>
<option value="Land Rover">Land Rover</option>
</select> …
Run Code Online (Sandbox Code Playgroud) Down bellow是一个代码的一部分,用于计算单词的元音数量.第一个代码与第二个代码做同样的事情?所以,如果我想使用相同操作的几个案例,我只需要将操作放在最后一个(就像在第一个代码中)?
第一:
public static int contvowel(String pal){
int cont=0;
pal=pal.toLowerCase();
for(int i=0; i<pal.length();i++) {
switch(pal.charAt(i)){
case 'a':
case 'e':
case 'i':
case 'o':
case 'u': { cont=cont+1; break; }
}
}
return cont;
}
Run Code Online (Sandbox Code Playgroud)
第二:
public static int contvowel(String pal){
int cont=0;
pal=pal.toLowerCase();
for(int i=0; i<pal.length();i++) {
switch(pal.charAt(i)){
case 'a': cont=cont+1; break;
case 'e': cont=cont+1; break;
case 'i': cont=cont+1; break;
case 'o': cont=cont+1; break;
case 'u': cont=cont+1; break;
}
}
return cont;
}
Run Code Online (Sandbox Code Playgroud)
提前致谢.:)
我不明白为什么switch-case statement
要求你break
在每个之后明确插入一个case
.一旦case
制成,它的重点不是停止吗?
有人可以给我一个case
找到a的情况,true
但由于某种原因[ 你在这里插入原因 ]你仍然需要代码块来执行.
这是一个虚荣心 PHP switch-case statement
switch ($error) {
case 'empty':
$msg = 'Field cannot be empty.';
break;
case 'invalid':
$msg = "Field may only contain number.";
break;
}
Run Code Online (Sandbox Code Playgroud)
这是一个invaild PHP switch-case statement
switch ($error) {
case 'empty':
$msg = 'Field cannot be empty.';
case 'invalid':
$msg = "Field may only contain number.";
}
Run Code Online (Sandbox Code Playgroud)
那么这break
无用还是在某些情况下有用?
我创建一个类Course
代表有三个属性的课程对象courseID
,letterGrade
和numberGrade
.
numberGrade
是letterGrade
使用该computeGrade()
方法计算的.我正在测试我的Course
课程并发现使用的switch语句computeGrade
无法识别相关内容substring
.
为什么会这样?
public void computeGrade() {
switch (letterGrade.substring(0,1)) {
case "A": numberGrade = 4.0;
case "B": numberGrade = 3.0;
case "C": numberGrade = 2.0;
case "D": numberGrade = 1.0;
case "F": numberGrade = 0.0;
default: numberGrade = 999;
}
if(letterGrade.endsWith("+") && !letterGrade.startsWith("A") && !letterGrade.startsWith("F")) {
numberGrade += 0.3;
}
else if(letterGrade.endsWith("-") && !letterGrade.startsWith("D") && !letterGrade.startsWith("F")) {
numberGrade -= 0.3;
} …
Run Code Online (Sandbox Code Playgroud) import java.util.Scanner;
class Test {
public static void main(String args[]) {
String charr;
try{
Scanner sc = new Scanner(System.in);
System.out.println("Enter the Value ");
charr = sc.next();
switch (charr +"|"+ charr) {
case "a|A" : System.out.println("a | A"); break;
case "b|B" : System.out.println("b | B"); break;
case "c|C" : System.out.println("c | C"); break;
case "d|D" : System.out.println("d | D"); break;
default: System.out.println("You are doing it wrong");
}
} catch(java.util.InputMismatchException e) {
System.out.println("Exception thrown :" + e);
}
System.out.println("Out of Block");
} …
Run Code Online (Sandbox Code Playgroud) 我想知道是否可以这样做:
switch (header[0])
{
case 'M' || 'm':
break;
case 'K' || 'k':
break;
default:
break;
}
Run Code Online (Sandbox Code Playgroud)
如果无法做到这一点,我想知道是否有其他方法可以做到,但不能使用if
语句.
谢谢.
如何在不使用Switch或If的情况下执行逻辑?
比如check_id_switch($ id)
function check_id_switch($id){
switch($id){
case '1':
$HW = 'Hello, World!';
break;
default:
$HW = 'Goodbye, World!';
break;
}
return $HW;
}
Run Code Online (Sandbox Code Playgroud)
或者实例check_id_if($ id)
function check_id_if($id){
if($id == 1){
$HW = 'Hello, World!';
}
else{
$HW = 'Goodbye, World!';
}
return $HW;
}
Run Code Online (Sandbox Code Playgroud)
check_id_switch($ id)和check_id_if($ id)这两个函数都将检查ID的引用.
如何在不使用php中的if/switch语句的情况下创建与上面相同的逻辑?我也想避免使用forloops.
关于开关/ if的性能有多个争论,但是如果有另一个控制结构,它是在下面还是外面执行上述控制结构?
添加登录脚本作为if语句的示例.我删除了登录脚本的主干.如果为true,则无需查看已完成的操作:false.我觉得下面是笨重而且不洁净的.
if(!empty($_POST))
{
$errors = array();
$username = trim($_POST["username"]);
$password = trim($_POST["password"]);
$remember_choice = trim($_POST["remember_me"]);
if($username == "")
{
$errors[] = "";
}
if($password == "")
{
$errors[] = ""; …
Run Code Online (Sandbox Code Playgroud) 我试图根据从函数接收的特定值创建一个新变量.
变量可以是不同的类.
这是我正在尝试的:
switch (request)
{
case "ClassA":
{
var x = new ClassA();
break;
}
case "ClassB":
{
var x = new ClassB();
break;
}
case "ClassC":
{
var x = new ClassC();
break;
}
case "ClassD":
{
var x = new ClassD();
break;
}
default:
break;
}
Run Code Online (Sandbox Code Playgroud)
这很好,直到这里没有问题.当我尝试使用x
switch语句范围之外的值时,会出现问题.系统说x
在当前上下文中不存在.
有没有办法实现这个目标?
进入下面的代码case 1:
来case 2:
和case 5:
似乎有执行任何代码.我的问题是,我们不能省略输入它们吗?
switch(c)
{
case 1:
case 2:
case 3:
a++;
break;
case 5:
default:
b++;
break;
}
Run Code Online (Sandbox Code Playgroud)