2017-06-20 61 views
1
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; 
} 

上面的代碼轉換功能是在開關計算器... 查詢: 我如何能在默認的情況下再次調用切換功能?查詢有關使用Java

+2

開關是一個陳述,而不是一個功能。在Java中稱爲函數的方法稱爲方法。如果你想重複,你需要在while循環中包含所有的代碼。 –

+0

你是否設法使它工作? – luizfzs

回答

0

讓我們假設你的代碼是在一個叫calculate()

有你能做到這幾個方面的功能。

遞歸:

只是在開關再次調用該函數。

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

返回值,循環:

變化的功能,所以它返回一個值。例如,如果is做了除default之外的任何操作,則返回true,如果它達到默認值,則返回false。然後,在調用calculate()的邏輯中,將它放在某種循環中。

bool doLoop = true; 
while (doLoop) 
{ 
    doLoop = !calculate() 
} 
0

你可以把它放在一個循環中,例如一個do ... while循環,你可以捕獲一個鍵作爲結束條件。

do { 
    // your code here 
} while(ending_condition); 
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; 
    } 
} 

注意,我寫​​而不是breakbreak只會跳出switch語句。這就是爲什麼我在循環開始之前添加了標籤loop:,以便稍後可以跳出循環而不是switch

您的術語

在Java中的一些修改,目前在技術上已經沒有任何功能。函數必須在類之外。 Java中只有「方法」。他們是這樣的:

public static void someMethod(int somePar) { } 

switch既不是函數也不是方法,所以你不能「呼」一下。 switch是「執行」或「運行」的控制結構。

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; 
    } 
} 
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