我如何修复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);
}
}
答案 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";
}
}