Ни один из других ответов не дал мне никаких указаний о том, что делать в моем затруднительном положении, поэтому я подумал, что начинаю новый вопрос.
Я хочу написать программу, в которой кто-то вводит количество As, Bs и 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"; }
Проблема в том, что, если количество А и В квалифицируют их для EA, они также будут претендовать на HA. Это явно нежелательно. Как я могу решить эту проблему?
Проблема в том, что, если количество А и В квалифицируют их для EA, они также будут претендовать на HA. Это явно нежелательно. Как я могу решить эту проблему?
Ответ на эту конкретную часть вопроса: Use else
:
if (numA >= 11 && numB >=1) {
grade = "EA";
} else if (numA >=5 && numB >=5) {
//^^^^------------------------------ here
grade = "HA";
}
// ...and so on...
Другой подход состоит в том, чтобы иметь объекты с требованиями для каждого из уровней в массиве, отсортированные по "лучшему" классу (EA, если я правильно вас понимаю), а затем прокрутить те объекты, которые проверяют, чтобы увидеть, какие оценивать человека, имеющего квалификацию и принимающего первый. Что более подходит для того, что вы делаете, зависит от вас, у обоих есть плюсы и минусы с точки зрения ремонтопригодности и ясности.
Я только что попробовал программу посмотреть
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 B C 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");
}
}
}
if (...) else if (...) else if (...)