【问题标题】:Returning a Variable from a Separate Method, but I still get errors从单独的方法返回变量,但我仍然收到错误
【发布时间】:2013-09-17 13:25:30
【问题描述】:

你好 stackoverflow 社区。目前我是java新手,我正在尝试弄清楚如何模块化程序。无论出于何种原因,当我返回变量 averageScore 时,它​​都会在 main 方法中为该变量提供一个错误。任何帮助将不胜感激。

public class Program4
{

public static void main(String[  ] args)
{
    EasyReader console = new EasyReader(); //Connect to EasyReader.class
    System.out.print("Enter the score from game 1: ");
    double score1 = console.readDouble(); //Reads the user input for game 1 
    System.out.print("Enter the score from game 2: ");
    double score2 = console.readDouble(); //Reads the user input for game 2
    System.out.print("Enter the score from game 3: ");
    double score3 = console.readDouble(); //Reads the user input for game 3
    average(score1, score2, score3);
    displayScores(score1, score2, score3, averageScore);
}
public static void average(double score1, double score2, double score3)
{
    double averageScore = ((double)score1+score2+score3)/3; //Divides miles by gallons  
    getAverage();
}
public static double getAverage()
{
    return new averageScore;
}   
public static void displayScores(double score1, double score2, double score3, double averageScore)
{
    System.out.println("Game 1 Score: " + score1 + " points"); //Prints score 1
    System.out.println("Game 2 Score: " + score2 + " points"); //Prints score 2
    System.out.println("Game 3 Score: " + score3 + " points"); //Prints score 3     
    System.out.println("Average score: " + RoundDouble.roundDouble(averageScore, 2) + " points "); //Prints the average score and rounds it to 2 decimals
}
}

【问题讨论】:

  • 考虑范围并检查返回值的方法。
  • 我不确定这是什么意思,你能澄清一下吗?
  • 当您直接拨打getAverage(); 时,您期望会发生什么?
  • 将堆栈跟踪的相关部分与您的问题一起包含在内是一种很好的做法

标签: java methods return symbols


【解决方案1】:

试试这个:

public static double average(double score1, double score2, double score3)
{
    return ((double)score1+score2+score3)/3; //Divides miles by gallons  
}

然后在你的 main 方法中,你可以这样做:

EasyReader console = new EasyReader(); //Connect to EasyReader.class
System.out.print("Enter the score from game 1: ");
double score1 = console.readDouble(); //Reads the user input for game 1 
System.out.print("Enter the score from game 2: ");
double score2 = console.readDouble(); //Reads the user input for game 2
System.out.print("Enter the score from game 3: ");
double score3 = console.readDouble(); //Reads the user input for game 3
double averageScore = average(score1, score2, score3);
displayScores(score1, score2, score3, averageScore);

您不再需要 getAverage() 方法

【讨论】:

    【解决方案2】:

    您的变量score1、score2、score3、averageScores 都是方法内部的局部变量。 将它们声明为class Program4 的attributes,然后通过instantiating 的对象Class Program4 访问它们。

    【讨论】:

      【解决方案3】:

      这里有几个问题:

      average(score1, score2, score3);

      您尚未将返回值分配给本地可访问的任何内容。例如,将 average() 的值分配给一个局部变量,就像您对 score3 所做的那样。

      public static void average(double score1, double score2, double score3)
      {
          double averageScore = ((double)score1+score2+score3)/3; //Divides miles by gallons  
          getAverage();
      }
      

      什么?只需从这里返回averageScore,无需调用其他方法。

      【讨论】:

        猜你喜欢
        • 2017-07-06
        • 2015-01-17
        • 1970-01-01
        • 2013-03-27
        • 1970-01-01
        • 2020-12-25
        • 1970-01-01
        • 1970-01-01
        • 2018-03-12
        相关资源
        最近更新 更多