Java 需要帮助简化我代码中的方法吗
如何修复determineGrade();所以在输入每一个新的整数输入后,它会给你一个分数。我可以对res2和res3重复res1,但是没有更简单的方法吗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
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";
}
}