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

Java 需要帮助简化我代码中的方法吗,java,Java,如何修复determineGrade();所以在输入每一个新的整数输入后,它会给你一个分数。我可以对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 Sca

如何修复determineGrade();所以在输入每一个新的整数输入后,它会给你一个分数。我可以对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);
    }

}
import java.util.Scanner;
公开课答案3{
静态平均积分;
静态int res1;
静态int res2;
静态int res3;
静态扫描仪输入=新扫描仪(System.in);
公共静态void main(字符串[]args){
平均数();
}
静态空隙平均值()
{
System.out.println(“请输入考试1结果”);
res1=inPut.nextInt();
determineGrade();
System.out.println(“请输入考试2结果”);
res2=inPut.nextInt();
determineGrade();
System.out.println(“请输入考试3结果”);
res3=inPut.nextInt();
determineGrade();
平均值=(res1+res2+res3)/3;
System.out.println(“这些考试结果的平均值为”+avg);
}
静态void determineGrade()
{
字符串级别=空;
如果(res1>84&&res1 74&&res1 64&&res1<75)
{
等级=“C”;
}
否则如果(res1>49&&res1<65)
{
grade=“P”;
}
否则如果(res1<50)
{
等级=“F”;
}
System.out.println(“你的成绩是”+成绩);
}
}

将结果(和考试编号)传递给方法,而不是将
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
将返回等级-您仅限制主方法的打印结果。另外,
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";
        }
    }

}
公共类答案3{
静态整数重计数=3;
静态扫描仪输入=新扫描仪(System.in);
公共静态void main(字符串[]args){
平均数();
}
静态空隙平均值(){
整数和=0;
对于(int i=0;i84&&res 74&&res 64&&res<75){
返回“C”;
}否则如果(分辨率>49&&res<65){
返回“P”;
}否则{
返回“F”;
}
}
}

我不确定我是否正确理解了您的意思,但以下是我的解决方案:

 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);
}
static void calcAverage()
{
System.out.println(“请输入考试1结果”);
res1=inPut.nextInt();
determineGrade(res1);
System.out.println(“请输入考试2结果”);
res2=inPut.nextInt();
determineGrade(res2);
System.out.println(“请输入考试3结果”);
res3=inPut.nextInt();
determineGrade(res3);
平均值=(res1+res2+res3)/3;
System.out.println(“这些考试结果的平均值为”+avg);
}
静态空隙确定等级(int res1)
{
字符串级别=空;
如果(res1>84&&res1 74&&res1 64&&res1<75)
{
等级=“C”;
}
否则如果(res1>49&&res1<65)
{
grade=“P”;
}
否则如果(res1<50)
{
等级=“F”;
}
System.out.println(“你的成绩是”+成绩);
}
静态字符串确定GRADE()
{ 
如果(res1>100){
返回null;
}
否则如果(res1<50){
返回“F”;
}
否则如果(res1<65)
{ 
返回“P”;
} 
否则如果(res1<75)
{ 
返回“C”;
}

else if(res1)提示:阅读方法参数和返回值,这样您就可以调用
String grade1=determineGrade(res1);String grade2=determineGrade(res2);
etcI将建议使用“case”
determineGrade
函数中的语句。@AlvinBunk我想你是指switch语句。但是switch语句不能将值与范围进行比较,只能与常量进行比较。而且switch fallthrough始终是bug的来源。谢谢,很容易理解你所做的事情。帮了我很多忙!谢谢
 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);
}
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";
    } 
}