如何在 Kotlin 实施转换案例陈述

如何在 Kotlin 实施相等于下面的 javaabc0语句代码?

switch (5) {
case 1:
// Do code
break;
case 2:
// Do code
break;
case 3:
// Do code
break;
}
188886 次浏览

你可以这样做:

when (x) {
1 -> print("x == 1")
2 -> print("x == 2")
else -> { // Note the block
print("x is neither 1 nor 2")
}
}

提取自 官方帮助

当表达式

when取代了类 C 语言的开关运算符

when (x) {
1 -> print("x == 1")
2 -> print("x == 2")
else -> { // Note the block
print("x is neither 1 nor 2")
}
}

when将其参数按顺序匹配所有分支,直到满足某个分支条件为止。when既可以用作表达式,也可以用作语句。如果将其用作表达式,则满意分支的值将成为整个表达式的值。如果将其用作语句,则忽略各个分支的值。(就像 if一样,每个分支可以是一个块,它的值是块中最后一个表达式的值。)

来自 https://kotlinlang.org/docs/reference/control-flow.html#when-expression

在 Java 中的 switch实际上就是 Kotlin 的 when,但是语法不同。

when(field){
condition -> println("Single call");
conditionalCall(field) -> {
print("Blocks");
println(" take multiple lines");
}
else -> {
println("default");
}
}

下面是一个不同用途的例子:

// This is used in the example; this could obviously be any enum.
enum class SomeEnum{
A, B, C
}
fun something(x: String, y: Int, z: SomeEnum) : Int{
when(x){
"something" -> {
println("You get the idea")
}
else -> {
println("`else` in Kotlin`when` blocks are `default` in Java `switch` blocks")
}
}


when(y){
1 -> println("This works with pretty much anything too")
2 -> println("When blocks don't technically need the variable either.")
}


when {
x.equals("something", true) -> println("These can also be used as shorter if-statements")
x.equals("else", true) -> println("These call `equals` by default")
}


println("And, like with other blocks, you can add `return` in front to make it return values when conditions are met. ")
return when(z){
SomeEnum.A -> 0
SomeEnum.B -> 1
SomeEnum.C -> 2
}
}

除了 when { ... }之外,其中大多数都编译成 switchwhen { ... }编译成一系列 if 语句。

但是对于大多数使用,如果使用 when(field),它将编译为 switch(field)

但是,我想指出的是,switch(5)有一大堆分支只是在浪费时间。5永远是5。如果使用的是 switch、 If 语句或任何其他逻辑运算符,则应该使用变量。我不确定这个代码是一个随机的例子还是实际的代码。我指出这一点,以防是后者。

Kotlin的开关盒非常灵活

when(x){


2 -> println("This is 2")


3,4,5,6,7,8 -> println("When x is any number from 3,4,5,6,7,8")


in 9..15 -> println("When x is something from 9 to 15")


//if you want to perform some action
in 20..25 -> {
val action = "Perform some action"
println(action)
}


else -> println("When x does not belong to any of the above case")


}

这里有一个例子来了解如何在任意对象中使用“ when”,

Vehicle lePart 是一个包含四种类型的枚举类。

Mix 是一个接受两种车辆部件类的方法。

SetOf (p1,p2) -Expression 可以生成任何对象

SetOf 是一个 kotlin 标准库函数,它创建包含对象的 Set。

集合是一个集合,其中项目的顺序并不重要。 Kotlin 允许结合不同的类型来获得不同的值。

当我通过车辆零件。两个和车辆零件。轮子,我得到“自行车”。 当我通过车辆零件。四和车辆零件。轮子,我得到“车”。

样本代码,

enum class VehicleParts {
TWO, WHEEL, FOUR, MULTI
}


fun mix(p1: VehicleParts, p2: VehicleParts) =
when (setOf(p1, p2)) {


setOf(VehicleParts.TWO, VehicleParts.WHEEL) -> "Bicycle"


setOf(VehicleParts.FOUR, VehicleParts.WHEEL) -> "Car"


setOf(VehicleParts.MULTI, VehicleParts.WHEEL) -> "Train"
else -> throw Exception("Dirty Parts")


}


println(mix(VehicleParts.TWO,VehicleParts.WHEEL))

只要使用 什么时候关键字。如果你想做一个循环,你可以这样做:

var option = ""
var num = ""


while(option != "3") {
println("Choose one of the options below:\n" +
"1 - Hello World\n" +
"2 - Your number\n" +
"3 - Exit")


option = readLine().toString()


// equivalent to switch case in Java //


when (option) {
"1" -> {
println("Hello World!\n")
}
"2" -> {
println("Enter a number: ")
num = readLine().toString()


println("Your number is: " + num + "\n")
}
"3" -> {
println("\nClosing program...")
}
else -> {
println("\nInvalid option!\n")
}
}
}
        val operator = '+'
val a = 6
val b = 8


val res = when (operator) {
'+' -> a + b
'-' -> a - b
'*' -> a * b
'/' -> a / b
else -> 0
}
println(res);

对于常见情况,我们使用以下代码

        val operator = '+'
val a = 6
val b = 8


val res = when (operator) {
'+',
'-' -> a - b
'*',
'/' -> a / b
else -> 0
}
println(res);

当定义具有多个分支的条件表达式时。它类似于类 C 语言中的 switch 语句。它的简单形式是这样的。

   when (x) {
1 -> print("x == 1")
2 -> print("x == 2")
else -> { // Note the block
print("x is neither 1 nor 2")
}
}

按顺序将其参数与所有分支匹配,直到满足某个分支条件为止。

何时可以用作表达式或语句。如果将其用作表达式,则第一个匹配分支的值将成为整个表达式的值。如果将其用作语句,则忽略各个分支的值。就像 if 一样,每个分支都可以是一个块,它的值是块中最后一个表达式的值。

 import java.util.*


fun main(args: Array<String>){
println("Hello World");


println("Calculator App");


val scan=Scanner(System.`in`);


println("""
please choose Your Selection to perform
press 1 for addition
press 2 for substraction
press 3 for multipication
press 4 for divider
press 5 for divisible
""");


val opt:Int=scan.nextInt();


println("Enter first Value");
val v1=scan.nextInt();
println("Enter Second Value");
val v2=scan.nextInt();


when(opt){


1->{
println(sum(v1,v2));
}


2->{
println(sub(v1,v2));
}


3->{
println(mul(v1,v2));
}


4->{
println(quotient(v1,v2));
}


5->{
println(reminder(v1,v2));
}


else->{
println("Wrong Input");
}


}




}




fun sum(n1:Int,n2:Int):Int{
return n1+n2;
}


fun sub(n1:Int, n2:Int):Int{
return n1-n2;
}


fun mul(n1:Int ,n2:Int):Int{
return n1*n2;
}


fun quotient(n1:Int, n2:Int):Int{
return n1/n2;
}


fun reminder(n1:Int, n2:Int):Int{
return n1%n2;
}

在 Kotlin 他们不是开关状态。但我们有 when表达类似开关。就像 if-else 或 switch 一样,首先检查所有条件,如果没有匹配,则计算 else 代码。

when (n) {
1 -> {
print("First")
// run your code
}
2 -> print("Second")
3, 4 -> print("Third or Forth") // check multiple conditions for same code
in 1..100 -> print("Number is in the range")
else -> {
print("Undefined")
}
}

在开关盒中不需要任何断开。

如果你想在 Kotlin 使用 switch case (When)打印或打开多个 activity,请使用以下代码。.谢谢你。.

Var dataMap: Map < String? ,String? > = HashMap () 字符串? =”

when (noteType) {
"BIGTEXT" -> NEW_PAGE(dataMap)
"NORMAL" -> NORMAL_PAGE(dataMap)
"ABOUT"->ABOUT_PAGE((dataMap))


}