回答
你的代碼有很多錯誤。我希望這一個適合你。
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");
你擁有一切權利,但得到的測試案例(3)給你一個「B」,你需要修復你的第一個if語句爲:
if (merit < 10) {
通過具有(優點< = 10 ),這將包括所有數字,最多爲10個。對於測試用例5,基於邏輯,它應該工作得很好。
不,我不認爲它是這樣工作的,因爲當我按照你的建議改變它時,我的測試用例1出錯了。 –
@ 20Cents這是因爲您使用'600-649'邏輯的範圍具有'500'的下限。 – bcsb1001
這是因爲你的邏輯有問題。你在第一條陳述中說的是,如果薪水範圍在500到648之間,而且他們的優點低於10,他們得到一個C,如果他們的優點大於10,他們得到一個B.你真的應該添加一個額外的if語句來分解500-600和600-649之間的分數。 –
如果您希望自己解決此問題,請確保爲所有範圍制定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");
}
}
將修復縮進/編碼格式,只需一秒鐘.. –
你寫道: 「薪水$ 600和$ 649之間」 意思:
如果(工資> 600 & &薪水< 649){...}
又道: 「薪水是$ 700和$ 799之間」 平均:
如果(工資> 700 & &工資< 799){...}
也是梅里特,因爲它是在我之前解釋!
- 1. 相等對象比較:JAVA
- 2. Java多級比較器
- 3. 比較值和確定趨勢
- 4. JAVA:比較兩個一維數組以確切相等
- 5. 確定複雜性等級
- 6. 比較JAVA中的優先級隊列
- 7. 比較Java Beans和BeanComparator
- 8. 閱讀比較和用java
- 9. 比較MySQL和Java時間
- 10. Java比較整數和bigInteger
- 11. java和javascript回調比較
- 12. java arraylists比較A和B
- 13. 使用switch/if語句將字母等級與數字等級相比較?
- 14. 如何確保兩個邏輯和比較操作相等?
- 15. 具有定製匿名比較器的Java優先級隊列
- 16. 是否有比較/比較兩個Java包的體面工具?
- 17. 優先級隊列自定義比較
- 18. 如何正確使用Java比較器?
- 19. java日曆比較不正確
- 20. Java,「指針」相等和字符串比較
- 21. PHP password_verify()和慢等於比較
- 22. String比較null和empty是否相等
- 23. JavaScript三等於和三變量比較
- 24. 覆蓋等於和比較字符串
- 25. 高級比較和交換(CAS)函數?
- 26. 比較和優先級隊列
- 27. cmp和je在比較相等值時不工作
- 28. 用於架構比較和升級的開源工具腳本
- 29. Java Array比較
- 30. Java - 比較類?
不應該如果(薪水> 500 ||工資<649){...'用'&&'而不是'||'用'&&'? – pzaenger
不是,當我改成&&時,它沒有輸出任何東西 –
如果你在第一個if語句中使用'||'而salary值大於500,你的代碼永遠不會進入else if 。 – pzaenger