2016-09-29 122 views
1

我們的老師要求我們創建一個關於給定的情況的java程序,它是每小時使用if/else的支付率,這是我出來和我很高興(我只是一個初學者)。然後下一條指令是用switch語句替換if/else。他還沒有討論switch語句。我試圖搜索他們,但我無法理解。請幫忙。非常感激。用switch語句代替if/else

確切說明: 1.使用if/else構建一個程序,根據工作小時數計算人員工資。注意ff:工資率是每小時35菲律賓比索。 40小時後工作的任何時間以正常小時費率的1.5倍支付。計算並顯示正常工資,加班工資和總工資。 2.通過用switch語句替換if/else結構來修改以前的工作。

import java.util.Scanner; 
    public class Payment2 { 

    public static void main (String [] args){ 
    Scanner input=new Scanner(System.in); 
    double hours; 
    double Prph = 35; //Prph means Pay rate per hour// 


    System.out.println("Enter your working hours:"); 
    hours=input.nextDouble(); 
    if (hours <= 40){ 
     System.out.println("Your pay rate for the day is Php "+hours * Prph); 
    } 
    else if (hours > 40){ 
     double Ovtime= hours - 40; 
     double NPay= hours * Prph; 
     double OvPay= Ovtime * 52.5; 

     System.out.println("Normal Pay:    Php "+   NPay); 
     System.out.println("Overtime Pay:   Php " +  OvPay); 
     System.out.println("\nYour total pay rate is: Php "+ (NPay+OvPay)); 
    } 

    } 
} 
+3

您確定關於說明嗎?這個'if'不適用於'switch'。也許他們想要提供不同的費率(如PHP,Java,洗車等)? – Thilo

+0

這是確切的說明:1.使用if/else構建一個程序,根據工作小時數計算人員工資。注意ff:工資率是每小時35菲律賓比索。 40小時後工作的任何時間以正常小時費率的1.5倍支付。計算並顯示正常工資,加班工資和總工資。 2.通過用switch語句替換if/else結構來修改以前的工作。多數民衆贊成在...或者也許我的程序是錯誤的??????? – Jevi

+0

https://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html –

回答

2

我寫這個可能是說明,但我認爲你的問題需要重新審視。

int a = hours<=40?0:1; 
switch(a){ 
    case 0: 
     //do <=40 stuff. 
     break; 
    case 1: 
     //do >40 stuff. 
     break; 
} 

以這種方式,你可以描述任何數字(以及整數)的情況,並打開它們。

1

除了在Java中,你不能直接定義開關範圍(看這個QA:In Java,Using switch statement with a range of value in each case?),在此特別情況下,你可以嘗試做這樣的伎倆,只是爲了顯示你的老師,你做明白switch操作:

switch((int)(hours/40)) { 
    case 0: case 1: { 
    System.out.println("Your pay rate for the day is Php "+hours * Prph); 
    break; 
    } 
    default: { 
     double Ovtime= hours - 40; 
     double NPay= hours * Prph; 
     // other stuff 
    } 
} 
1
String TimeUsed = (hours<=40)?"Normal":"Overtime"; 
switch(TimeUsed) 
{ 
case "Normal": 
// 35 to pay 
break; 

case "Overtime": 
// 1.5 times of 35 to pay 
break; 

} 

在你的情況,你可以嘗試stringintcharEnum練習開關罩