2014-03-13 56 views
1

沒有其他答案給了我任何跡象表明我在困境中該怎麼做,所以我想我會開始一個新的問題。我該如何着手編寫這個評分系統?

我想編寫一個程序,其中有人輸入他們的數量的As,Bs和Cs,然後輸出他們的標記。

這是最低要求:

EA: 12 As, 2 Bs 
HA: 6 As, 6 Bs, 2 Cs 
CA: 8 Bs, 5 Cs 
SA: 12 Cs 
PA: 6 Cs 

我已經嘗試了幾種方法,但沒有工作或我要麼預見到的代碼會非常長,過於複雜。

我遇到的一個主要障礙是我的標準通常會將它分爲兩​​個等級。

例如:

//EA Grade 

if (numA >= 11 && numB >=1) 
{ grade = "EA"; } 

//HA Grade 

if (numA >=5 && numB >=5) 
{ grade = "HA"; } 

的問題有,如果作爲與B的數量符合他們的EA,他們也將有資格獲得HA。這顯然是不可取的。我將如何去解決這個問題?

回答

1

存在的問題是,如果As和Bs的數量符合EA的要求,他們也有資格獲得HA。這顯然是不可取的。我將如何去解決這個問題?

的問題的答案的特定部分是:使用else

if (numA >= 11 && numB >=1) { 
    grade = "EA"; 
} else if (numA >=5 && numB >=5) { 
//^^^^------------------------------ here 
    grade = "HA"; 
} 
// ...and so on... 

另一種方法是有對於每個級別要求的對象,在一個陣列,通過排序「最好的「等級(EA,如果我正確理解你的話),然後通過這些對象進行循環檢查,看看哪個等級合格並取得第一個等級。哪一個更適合你正在做的事情取決於你,在維護性和清晰度方面都有優點和缺點。

+0

有,它會認爲一切,是不是EA是HA,它不一定是真正的問題。 – user3414510

+0

@ user3414510:不,你保留這個系列:'if(...)else if(...)else if(...)' –

+0

哦,我明白了。所以如果第一條語句變成true,第二條語句('else')將不會運行? – user3414510

0

我剛纔給一試的程序看看

import java.util.Scanner; 

/*EA: 12 As, 2 Bs 
*HA: 6 As, 6 Bs, 2 Cs 
*CA: 8 Bs, 5 Cs 
*SA: 12 Cs 
*PA: 6 Cs*/ 
public class cases { 

    public static void main(String args[]){ 

     Scanner in=new Scanner(System.in); 
     System.out.println("Enter the number of A's B's C's to declare your grades"); 
     int a=in.nextInt(); 
     int b=in.nextInt(); 
     int c=in.nextInt(); 
     System.out.println("Enter the choice to know the Result 1:EA 2:HA 3:CA 4:SA 5:PA"); 
     int choice=in.nextInt(); 
     switch(choice) 
     { 
     case 1: if(a>=11&&b>=1){ 
        System.out.println("You are EA Grade Holder"); 

       } 
        else 
         System.out.println("You have to find out with other choices"); 
        break; 

     case 2: if(a>=5&&b>=5&&c>=1){ 

        System.out.println("You are HA Grade Holder"); 

        } 
        else 
        System.out.println("You have to find out with other choices"); 
         break; 
     case 3:  if(a>=7&&b>=7){ 

        System.out.println("You are CA Grade Holder"); 

       } 
        else 
        System.out.println("You have to find out with other choices"); 
        break; 
     case 4: if(c>=12){ 

          System.out.println("You are SA Grade Holder"); 

         } 
       else 
         System.out.println("You have to find out with other choices"); 
       break; 
     case 5: if(c==6){ 

        System.out.println("You are PA Grade Holder"); 

        } 
       else 
        System.out.println("You have to find out with other choices"); 
       break; 

     default:System.out.println("you have not entered proper choice"); 


     } 


    } 
} 
+0

儘管有時可能有效,但它不會解釋某人得到11 As&3 Bs的情況,這應該是HA,但該程序不會返回該情況。 – user3414510

+0

@ user3414510我很快就會帶着更新生病嘗試設備一些邏輯讓我們看看:) – coldy

+0

沒關係,我找到了一個解決方案(我認爲)。如果(numA> = 5 && numC = 0) {grade = } 這會返回正確的成績,假設該人正確地輸入他們的成績。謝謝你的幫助。 :) – user3414510