【问题标题】:Using a return value from a method in another method在另一个方法中使用一个方法的返回值
【发布时间】:2017-10-01 19:14:48
【问题描述】:

我正在尝试将 calcAverage 方法中的返回值“平均值”用于确定等级方法以获取 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;    
}

}

【问题讨论】:

  • 大量多余的空行不会使您的代码更易于阅读。

标签: java methods return


【解决方案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  );

在玩返回值的时候不需要调用两次函数。将其分配给一个变量,然后使用它。

【讨论】:

  • 感谢您的回答(以及所有发帖的人)。所以用我的代码,我用 System.out.print("Average test score is: " + calcAvergage(test) ); 打印分数没有问题。我确实将该值存储到变量标记中以用于打印字母等级。我对发生这种情况的顺序感到困惑。为什么在打印字母等级时必须先用可变标记打印平均分?
【解决方案2】:

像这样?

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

【讨论】:

    【解决方案3】:

    据我了解,您不想输入数字然后按 Enter,然后输入另一个数字,然后按 Enter 等等...

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

    【讨论】:

      【解决方案4】:

      您的问题令人困惑,您的代码存在逻辑错误,对不起。你有 if 语句使用相同的逻辑。(下面的例子)我会说更多地了解编程逻辑,你会回答你自己的问题

      else if (average >= 60 && average <= 69)
      {
      
           mark = 'D'; 
      }
      
      
      else if (average <= 60)
      {
      
          mark = 'F'; 
      }
      

      【讨论】:

        【解决方案5】:

        感谢 Avinash Raj 的指针。我现在知道了。

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

        【讨论】:

          猜你喜欢
          • 2021-07-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-06-23
          • 1970-01-01
          • 2020-10-01
          • 1970-01-01
          相关资源
          最近更新 更多