需要帮助简化我的代码中的方法

时间:2015-10-24 15:34:32

标签: java

我如何修复determineGrade();这样在输入每个新的Int输入后,它会给你一个分数。我可以为res2和res3重复res1,但是不是有一种更简单的方法吗?

import java.util.Scanner;

public class Answer3 {

    static int avg;

    static int res1;

    static int res2;

    static int res3;

    static Scanner inPut = new Scanner(System.in);


    public static void main(String[] args) {


        calcAverage();

    }

    static void calcAverage()
    {

        System.out.println("Please input exam 1 results");
        res1 = inPut.nextInt();
        determineGrade();
        System.out.println("Please input exam 2 results");
        res2 = inPut.nextInt();
        determineGrade();
        System.out.println("Please input exam 3 results");
        res3 = inPut.nextInt();
        determineGrade();
        avg = (res1 + res2 + res3) / 3;

        System.out.println("The average of these exam results are " + avg);
    }

    static void determineGrade()
    {
        String grade = null;

        if ( res1 > 84 && res1 <101  )
        {
            grade = "HD";
        }
        else if ( res1 > 74 && res1 <85 )
        {
            grade = "D";
        }
        else if ( res1 > 64 && res1 < 75 )
        {
            grade = "C";
        }
        else if ( res1 > 49 && res1 < 65 )
        {
            grade = "P";
        }
        else if ( res1 < 50 )
        {
            grade = "F";
        }

        System.out.println("Your grade is " + grade);
    }

}

4 个答案:

答案 0 :(得分:0)

不是将res1设为静态字段,而是将结果(和考试编号)传递给方法。像,

static void determineGrade(int exam, int res)
{
    String grade = null;
    if ( res > 84 && res <101  )
    {
        grade = "HD";
    }
    else if ( res > 74 && res <85 )
    {
        grade = "D";
    }
    else if ( res > 64 && res < 75 )
    {
        grade = "C";
    }
    else if ( res > 49 && res < 65 )
    {
        grade = "P";
    }
    else if ( res < 50 )
    {
        grade = "F";
    }
    System.out.printf("Your grade for exam %d is %s%n", exam, grade);
}

然后你可以用每个结果(和考试号码)来调用它。像

determineGrade(1, res1);
determineGrade(2, res2);
determineGrade(3, res3);

答案 1 :(得分:0)

您可以尝试以下解决方案。

determineGrade将返回等级 - 您仅限制主要方法的打印结果。此外,resCount使您的计划更具活力,更易于扩展。

public class Answer3 {

    static int resCount = 3;
    static Scanner inPut = new Scanner(System.in);

    public static void main(String[] args) {
        calcAverage();
    }

    static void calcAverage() {
        int sum = 0;

        for (int i = 0; i < resCount; i++) {
          System.out.println("Please input exam " + i + " results");

          int res = inPut.nextInt();
          sum += res;

          String grade = determineGrade(res);
          System.out.println("Your grade is " + grade);
        }

        double avg = sum / resCount;
        System.out.println("The average of these exam results are " + avg));
    }

    static String determineGrade(int res) {
        if ( res > 84 && res <101 ) {
            return "HD";
        } else if ( res > 74 && res <85 ) {
            return "D";
        } else if ( res > 64 && res < 75 ) {
            return "C";
        } else if ( res > 49 && res < 65 ) {
            return "P";
        } else {
            return "F";
        }
    }

}

答案 2 :(得分:0)

我不确定我是否理解正确,但这是我的解决方案:

 static void calcAverage()
{

    System.out.println("Please input exam 1 results");
    res1 = inPut.nextInt();
    determineGrade(res1);
    System.out.println("Please input exam 2 results");
    res2 = inPut.nextInt();
    determineGrade(res2);
    System.out.println("Please input exam 3 results");
    res3 = inPut.nextInt();
    determineGrade(res3);
    avg = (res1 + res2 + res3) / 3;

    System.out.println("The average of these exam results are " + avg);
}

static void determineGrade(int res1)
{
    String grade = null;

    if ( res1 > 84 && res1 <101  )
    {
        grade = "HD";
    }
    else if ( res1 > 74 && res1 <85 )
    {
        grade = "D";
    }
    else if ( res1 > 64 && res1 < 75 )
    {
        grade = "C";
    }
    else if ( res1 > 49 && res1 < 65 )
    {
        grade = "P";
    }
    else if ( res1 < 50 )
    {
        grade = "F";
    }

    System.out.println("Your grade is " + grade);
}

答案 3 :(得分:0)

static String determineGrade() 
{ 
    if (res1 > 100) {
        return null;
    }
    else if (res1 < 50) {
        return "F";
    }
    else if (res1 < 65 )
    { 
        return "P";
    } 
    else if (res1 < 75 )
    { 
        return "C";
    }
    else if (res1 <85 )
    { 
        return "D";
    } 
    else 
    { 
        return "HD";
    } 
}