查询java中的switch函数

时间:2017-06-20 17:54:49

标签: java

Scanner input = new Scanner(System.in);
System.out.println("please choose the operator");
System.out.println("1-->+ \n2-->- \n3-->* \n4-->/");
int z = input.nextInt();

switch (z) {
    case 1:
        System.out.println("your result is" + (x + y));
        break;
    case 2:
        System.out.println("your result is" + (x - y));
        break;

    case 3:
        System.out.println("your result is" + (x * y));
        break;
    case 4:
        System.out.println("your result is" + (x / y));
        break;
    default:
        System.out.println("choose the option from listed above");
        break;
}

以上代码适用于交换机中的计算器... 查询是: 如何在默认情况下再次调用开关功能?

5 个答案:

答案 0 :(得分:1)

好吧,你不能再次执行switch语句,因为这不能解决问题。 z的值不会更改,因此无论您重新执行switch多少次,它都将始终转到默认分支。

我建议将整个事情放在一个循环中,然后在1-4的情况下摆脱循环。

loop:
while (true) {
    Scanner input=new Scanner(System.in);
    System.out.println("please choose the operator");
    System.out.println("1-->+ \n2-->- \n3-->* \n4-->/");
    int z=input.nextInt();

    switch(z)
    {
    case 1 :
        System.out.println("your result is"+(x+ y));
        break loop;
    case 2 :
        System.out.println("your result is"+(x- y));
        break loop;

    case 3 :
        System.out.println("your result is"+(x* y));
        break loop;
    case 4 :
        System.out.println("your result is"+(x/ y));
        break loop;  
    default :
        System.out.println("choose the option from listed above");
        break;
    }
}

请注意,我写了break loop而不是breakbreak将突破switch语句。这就是为什么我在循环开始之前添加了一个标签loop:,以便我可以在以后突破循环,而不是switch

对术语进行了一些更正

在Java中,技术上没有功能。函数必须在类之外。只有"方法"在Java中。它们看起来像这样:

public static void someMethod(int somePar) { }

switch既不是功能也不是方法,因此您无法呼叫"它。 switch是一个"执行的控制结构"或"运行"。

答案 1 :(得分:1)

你可以这样做:

public void promptUser(){

  Scanner input=new Scanner(System.in);
  boolean validOption = false;

  while(!validOption){
    validOption = true;

    System.out.println("please choose the operator");
    System.out.println("1-->+ \n2-->- \n3-->* \n4-->/");
    int z=input.nextInt();

    switch(z){
      case 1 :
        System.out.println("your result is"+(x+ y));
        break;
      case 2 :
        System.out.println("your result is"+(x- y));
        break;
      case 3 :
        System.out.println("your result is"+(x* y));
        break;
      case 4 :
        System.out.println("your result is"+(x/ y));
        break;  
      default :
        System.out.println("choose the option from listed above");
        validOption = false;
        break;
    }

 }

}

我更喜欢使用循环,因此您不会反复对同一方法进行大量调用,因此可以避免使用OutOfMemoryError

答案 2 :(得分:0)

假设您的代码位于名为from datetime import timedelta float_time = 0.528084743 seconds_per_day = 24* 60 *60 time_in_seconds = round(float_time * seconds_per_day) time = timedelta(seconds=time_in_seconds) print(time)

的函数中

有几种方法可以做到这一点。

<强>递归:

只需在开关中再次调用该功能。

calculate()

返回一个值并循环:

更改功能以使其返回值。例如,如果除了默认值之外的任何内容,则返回true;如果默认值为默认值,则返回false。然后,在调用calculate()的逻辑中,将它放在某种循环中。

default :
    System.out.println("choose the option from listed above");
    calculate();
    return;

答案 3 :(得分:0)

你可以将它放在循环中,例如do ... while循环,你可以捕获一个键作为结束条件。

do {
    // your code here
} while(ending_condition);

答案 4 :(得分:0)

while(true)
{   
   Scanner input=new Scanner(System.in);
   System.out.println("please choose the operator");
   System.out.println("1-->+ \n2-->- \n3-->* \n4-->/ \n5-->Exit");
   int z=input.nextInt();

   switch(z)
   {
    case 1 :
    System.out.println("your result is"+(x+ y));
    break;
    case 2 :
    System.out.println("your result is"+(x- y));
    break;

    case 3 :
    System.out.println("your result is"+(x* y));
    break;
    case 4 :
    System.out.println("your result is"+(x/ y));
    break;
    case 5 :
    System.exit(0);
    default :
    System.out.println("choose the option from listed above");
    break;
    }
}