其他答案都没有给我任何关于我在困境中做些什么的迹象,所以我想我会开始一个新问题。
我想写一个程序,有人输入他们的As,B和Cs数,然后输出他们的标记。
这些是最低要求:
EA: 12 As, 2 Bs
HA: 6 As, 6 Bs, 2 Cs
CA: 8 Bs, 5 Cs
SA: 12 Cs
PA: 6 Cs
我尝试了几种但没有工作的方法,或者我预见到代码会很长并且过于复杂。
我遇到的一个主要障碍是我的标准经常将其归为两个等级。
例如:
//EA Grade
if (numA >= 11 && numB >=1)
{ grade = "EA"; }
//HA Grade
if (numA >=5 && numB >=5)
{ grade = "HA"; }
问题在于,如果As和B的数量使他们有资格获得EA,他们也有资格获得HA。这显然是不可取的。我该如何解决这个问题?
答案 0 :(得分:1)
问题在于,如果As和B的数量使他们有资格获得EA,他们也有资格获得HA。这显然是不可取的。我该如何解决这个问题?
问题的具体部分的答案是:使用else
:
if (numA >= 11 && numB >=1) {
grade = "EA";
} else if (numA >=5 && numB >=5) {
//^^^^------------------------------ here
grade = "HA";
}
// ...and so on...
另一种方法是让对象具有每个级别的要求,在数组中,按“最佳”等级排序(EA,如果我正确理解你),然后通过这些对象检查循环看看这个人有资格参加哪个等级并参加第一个等级。哪个更适合你正在做的事情取决于你,在可维护性和清晰度方面都有利有弊。
答案 1 :(得分:0)
我刚试了一下程序看看
import java.util.Scanner;
/*EA: 12 As, 2 Bs
*HA: 6 As, 6 Bs, 2 Cs
*CA: 8 Bs, 5 Cs
*SA: 12 Cs
*PA: 6 Cs*/
public class cases {
public static void main(String args[]){
Scanner in=new Scanner(System.in);
System.out.println("Enter the number of A's B's C's to declare your grades");
int a=in.nextInt();
int b=in.nextInt();
int c=in.nextInt();
System.out.println("Enter the choice to know the Result 1:EA 2:HA 3:CA 4:SA 5:PA");
int choice=in.nextInt();
switch(choice)
{
case 1: if(a>=11&&b>=1){
System.out.println("You are EA Grade Holder");
}
else
System.out.println("You have to find out with other choices");
break;
case 2: if(a>=5&&b>=5&&c>=1){
System.out.println("You are HA Grade Holder");
}
else
System.out.println("You have to find out with other choices");
break;
case 3: if(a>=7&&b>=7){
System.out.println("You are CA Grade Holder");
}
else
System.out.println("You have to find out with other choices");
break;
case 4: if(c>=12){
System.out.println("You are SA Grade Holder");
}
else
System.out.println("You have to find out with other choices");
break;
case 5: if(c==6){
System.out.println("You are PA Grade Holder");
}
else
System.out.println("You have to find out with other choices");
break;
default:System.out.println("you have not entered proper choice");
}
}
}