2017-05-03 159 views
-7

我試圖使用calcAverage方法中的返回值「average」到判斷字符值(A B C D F)的determineGrade方法中。從另一種方法的方法中使用返回值

但是,當我用這種方式編碼時,它會重複循環。有沒有辦法從calcAverage中獲取返回值,而不必再次執行循環並提出相同的測試分數?

package Chapter5; 

import java.util.Scanner; 
public class TestAverageAndGradewithLoop { 

public static void main(String[] args) {  

    Scanner input = new Scanner (System.in); 
    System.out.print("How many tests?: "); 
    int test = input.nextInt();   

    System.out.print("Average test score is: " + calcAvergage(test) ); 

    int mark = calcAvergage(test); 

    System.out.print("Letter grade is: " + determineGrade(mark));  
} 

public static int calcAvergage(int test){ 

    Scanner input = new Scanner (System.in); 
    int total = 0;  
    int x; 

    for (x = 1; x <= test; x++) 
    { 
     System.out.print("What is the score for test " + x + " : "); 
     int scores = input.nextInt(); 

     total = total + scores; 
    } 

    int average = total/(x-1); //have to do -1 because the final increment value of x is stored as x+1 

    return average; 
} 

public static char determineGrade(int average) 
{  
    char mark = 0; 

    if (average >= 90 && average <= 100)  
    {  
     mark = 'A'; 
    }   
    else if (average >= 80 && average <= 89) 
    {  
     mark = 'B'; 
    }  
    else if (average >= 70 && average <= 79) 
    {  
     mark = 'C'; 
    }  
    else if (average >= 60 && average <= 69) 
    {  
     mark = 'D'; 
    } 
    else if (average <= 60) 
    {  
     mark = 'F'; 
    }  

    return mark;  
} 

}

+0

多餘空白行的加載不會讓您的代碼更易於閱讀。 – khelwood

回答

0

喜歡這個?

int mark = calcAvergage(test); 
System.out.print("Average test score is: " + mark); 
1

取而代之的是:

System.out.print("Average test score is: " + calcAvergage(test) ); 

int mark = calcAvergage(test); 

做這個

int mark = calcAvergage(test);  
System.out.print("Average test score is: " + mark ); 

無需調用該函數兩次當您正在使用的返回值播放。將其分配給一個變量然後使用它。

+0

感謝您的回答(以及所有發佈者)。所以用我的代碼,我沒有問題打印分數 System.out.print(「平均測試分數是:」+ calcAvergage(測試)); 我確實將該值存儲到變量標記中用於打印字母等級。 我很困惑,發生這種情況的順序。爲什麼在打印字母等級時,必須首先使用變量標記來打印平均分數? – ChairmanMeow

0

從我的理解,你不想再輸入一個號碼,按Enter,然後輸入下一個號碼,然後按回車鍵等...

如果你說你有控制檯3測試用例只需要輸入3空格分隔數字如10 12 3.

0

你的問題很混亂,你的代碼有邏輯錯誤,很抱歉。您如果有使用相同的邏輯。(如下圖所示),我要說的語句學習更多的編程邏輯,你會回答你自己的問題

else if (average >= 60 && average <= 69) 
{ 

    mark = 'D'; 
} 


else if (average <= 60) 
{ 

    mark = 'F'; 
} 
0

THX到阿維納什·拉吉的指針。我現在知道了。

calcAverage的結果存儲在變量標記中,然後我可以使用結果中的int值來顯示分數以及顯示和執行determineGrade方法。

相關問題