2016-01-23 46 views
-2

我在嘗試獲取Java程序的邏輯權限時遇到了一些問題。Java比較工資和確定等級

在此先感謝。

+0

不應該如果(薪水> 500 ||工資<649){...'用'&&'而不是'||'用'&&'? – pzaenger

+0

不是,當我改成&&時,它沒有輸出任何東西 –

+0

如果你在第一個if語句中使用'||'而salary值大於500,你的代碼永遠不會進入else if 。 – pzaenger

回答

0

你的代碼有很多錯誤。我希望這一個適合你。

public static void main(String[] args) { 
int salary, merit; 
Scanner sc = new Scanner(System.in); 

System.out.print("Enter salary: "); 
salary = sc.nextInt(); 
System.out.print("Enter merit: "); 
merit = sc.nextInt(); 

int grade = 0; 

if(salary >= 500 && salary =< 649) 
    grade = 3; 

if(salary >= 600 && salary <= 799){ 
    grade = 2; 
    if (merit < 10 && salary <= 649) grade = 3; 
} 
if (salary >= 700 && salary <= 899){ 
    grade = 1; 
    if (merit < 20 && salary <= 799) grade = 2; 
} 

if (grade == 1) 
    System.out.println("salary: $ " + salary + ", merit: " + merit + " - Grade A"); 
else if (grade == 2) 
    System.out.println("salary: $ " + salary + ", merit: " + merit + " - Grade B"); 
else if (grade == 3) 
    System.out.println("salary: $ " + salary + ", merit: " + merit + " - Grade C"); 
0

你擁有一切權利,但得到的測試案例(3)給你一個「B」,你需要修復你的第一個if語句爲:

if (merit < 10) { 

通過具有(優點< = 10 ),這將包括所有數字,最多爲10個。對於測試用例5,基於邏輯,它應該工作得很好。

+0

不,我不認爲它是這樣工作的,因爲當我按照你的建議改變它時,我的測試用例1出錯了。 –

+0

@ 20Cents這是因爲您使用'600-649'邏輯的範圍具有'500'的下限。 – bcsb1001

+0

這是因爲你的邏輯有問題。你在第一條陳述中說的是,如果薪水範圍在500到648之間,而且他們的優點低於10,他們得到一個C,如果他們的優點大於10,他們得到一個B.你真的應該添加一個額外的if語句來分解500-600和600-649之間的分數。 –

0

如果您希望自己解決此問題,請確保爲所有範圍制定if條款。在這些情況下,它有助於徹底並確保涵蓋所有範圍。

例如,你已經明確地涵蓋範圍500 (包括)到(不包括)並且已覆蓋的範圍700個含最多。

或者,您也可以構建薪水的第一選擇,但隨後創建每個範圍的條款如下:

if (salary >= 600 && salary <= 649) { 
    if (merit <= 10) { 
     System.out.println("salary: $ " + salary + ", merit: " + merit + " - Grade C"); 
    } else { 
     System.out.println("salary: $ " + salary + ", merit: " + merit + " - Grade B"); 
    } 
} else if (salary >= 650 && salary < 699) { 
    System.out.println("salary: $ " + salary + ", merit: " + merit + " - Grade B"); 
} else if (salary >= 700) { 
    if (merit < 20) { 
     System.out.println("salary: $ " + salary + ", merit: " + merit + " - Grade B"); 
    } else { 
     System.out.println("salary: $ " + salary + ", merit: " + merit + " - Grade A"); 
    } 
} 
+0

將修復縮進/編碼格式,只需一秒鐘.. –

0

你寫道: 「薪水$ 600和$ 649之間」 意思:

如果(工資> 600 & &薪水< 649){...}

又道: 「薪水是$ 700和$ 799之間」 平均:

如果(工資> 700 & &工資< 799){...}

也是梅里特,因爲它是在我之前解釋!