在另一个方法中使用方法的返回值

时间:2017-05-03 19:50:31

标签: java methods return

我正在尝试将calcAverage方法中的返回值“average”用于确定参数方法以获取char值(A B C D F)。

但是,当我以这种方式编码时,它会重复循环。有没有办法从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;    
}

}

5 个答案:

答案 0 :(得分: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  );

当您使用返回值时,无需再次调用该函数。将其分配给变量然后使用它。

答案 1 :(得分:0)

喜欢这个吗?

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

答案 2 :(得分:0)

根据我的理解,你不想输入一个数字然后按回车然后输入另一个数字然后按回车等等......

如果你说你在控制台中有3个测试用例,只需键入3个空格分隔的数字,如10 12 3。

答案 3 :(得分:0)

你的问题很混乱,你的代码有逻辑错误,对不起。你有if语句使用相同的逻辑。(例如下面)我会说更多关于编程逻辑的知识,你会回答你自己的问题

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

     mark = 'D'; 
}


else if (average <= 60)
{

    mark = 'F'; 
}

答案 4 :(得分:0)

向Avinash Raj寻求指针。我现在知道了。

calcAverage的结果存储在变量标记中,然后我可以使用结果中的int值来显示得分,以及显示和执行determineGrade方法。