큰 목록에서 6 개 항목의 이름을 사용자에게 입력하도록 요청하는 프로그램을 만들려고합니다. 그런 다음 해당 항목의 모든 속성을 합산하고 모든 속성의 합계와 비용을 표시합니다. 이 작업을 수행하는 유일한 방법은 for 루프와 함께 엄청난 양의 if 및 else if 문이 필요합니다. 내가 사용해야하는 항목의 양을 고려하면 if 및 else 문이 최소 1000 줄이되며 작성하는 데 많은 시간이 걸립니다.
다음은 내 코드 샘플입니다.
import java.util.Scanner;
public class MyProgram
{
public static void main(String[] args)
{
Scanner one = new Scanner(System.in);
System.out.print("Champion: ");
String champion = one.next();
System.out.print("Item 1: ");
String item1 = one.next();
System.out.print("Item 2: ");
String item2 = one.next();
System.out.print("Item 3: ");
String item3 = one.next();
System.out.print("Item 4: ");
String item4 = one.next();
System.out.print("Item 5: ");
String item5 = one.next();
System.out.print("Item 6: ");
String item6 = one.next();
int totalhealth = 0;
int totalad = 0;
int totalap = 0;
int totalarmor = 0;
int totalmr = 0;
int totalcdr = 0;
int totalmana = 0;
int totalcstr= 0;
int totalls = 0;
int totalatcksp = 0;
int totalcost = 0;
for(int i = 0; i < 6; i++)
{
int itemhealth = 0;
int itemad = 0;
int itemap = 0;
int itemarmor = 0;
int itemmr = 0;
int itemcdr = 0;
int itemmana = 0;
int itemcstr = 0;
int itemls = 0;
int itematcksp = 0;
int itemcost = 0;
if(i == 0)
{
if(item1.equals("abyssal mask"))
{
itemhealth = 350;
itemmana = 300;
itemmr = 55;
itemcdr = 10;
itemcost = 2900;
}
else if (item1.equals("adaptive helm"))
{
itemhealth = 350;
itemmr = 55;
itemcdr = 10;
itemcost = 2800;
}
else if (item1.equals("aegis of the legion"))
{
itemarmor = 30;
itemmr = 30;
itemcost = 1100;
}
else if (item1.equals("aether wisp"))
{
itemap = 30;
itemcost = 850;
}
else if (item1.equals("amplifying tome"))
{
itemap = 20;
itemcost = 435;
}
else if (item1.equals("ancient coin"))
{
itemcdr = 5;
itemcost = 350;
}
else if (item1.equals("archangel's staff"))
{
itemap = 80;
itemmana = 250;
itemcost = 3100;
}
else if (item1.equals("ardent censer"))
{
itemap = 60;
itemcdr = 10;
itemcost = 2300;
}
else if (item1.equals("athene's unholy grail"))
{
itemap= 30;
itemmr = 30;
itemcdr = 10;
itemcost = 2100;
}
else if (item1.equals("b.f.sword"))
{
itemad = 40;
itemcost = 1300;
}
else if (item1.equals("bami's cinder"))
{
itemhealth = 200;
itemcost = 900;
}
}
if(i == 1)
{
if(item2.equals("abyssal mask"))
{
itemhealth = 350;
itemmana = 300;
itemmr = 55;
itemcdr = 10;
itemcost = 2900;
}
else if (item2.equals("adaptive helm"))
{
itemhealth = 350;
itemmr = 55;
itemcdr = 10;
itemcost = 2800;
}
else if (item2.equals("aegis of the legion"))
{
itemarmor = 30;
itemmr = 30;
itemcost = 1100;
}
else if (item2.equals("aether wisp"))
{
itemap = 30;
itemcost = 850;
}
else if (item2.equals("amplifying tome"))
{
itemap = 20;
itemcost = 435;
}
else if (item2.equals("ancient coin"))
{
itemcdr = 5;
itemcost = 350;
}
else if (item2.equals("archangel's staff"))
{
itemap = 80;
itemmana = 250;
itemcost = 3100;
}
else if (item2.equals("ardent censer"))
{
itemap = 60;
itemcdr = 10;
itemcost = 2300;
}
else if (item2.equals("athene's unholy grail"))
{
itemap= 30;
itemmr = 30;
itemcdr = 10;
itemcost = 2100;
}
else if (item2.equals("b.f.sword"))
{
itemad = 40;
itemcost = 1300;
}
else if (item2.equals("bami's cinder"))
{
itemhealth = 200;
itemcost = 900;
}
}
if(i == 2)
{
if(item3.equals("abyssal mask"))
{
itemhealth = 350;
itemmana = 300;
itemmr = 55;
itemcdr = 10;
itemcost = 2900;
}
else if (item3.equals("adaptive helm"))
{
itemhealth = 350;
itemmr = 55;
itemcdr = 10;
itemcost = 2800;
}
else if (item3.equals("aegis of the legion"))
{
itemarmor = 30;
itemmr = 30;
itemcost = 1100;
}
else if (item3.equals("aether wisp"))
{
itemap = 30;
itemcost = 850;
}
else if (item3.equals("amplifying tome"))
{
itemap = 20;
itemcost = 435;
}
else if (item3.equals("ancient coin"))
{
itemcdr = 5;
itemcost = 350;
}
else if (item3.equals("archangel's staff"))
{
itemap = 80;
itemmana = 250;
itemcost = 3100;
}
else if (item3.equals("ardent censer"))
{
itemap = 60;
itemcdr = 10;
itemcost = 2300;
}
else if (item3.equals("athene's unholy grail"))
{
itemap= 30;
itemmr = 30;
itemcdr = 10;
itemcost = 2100;
}
else if (item3.equals("b.f.sword"))
{
itemad = 40;
itemcost = 1300;
}
else if (item3.equals("bami's cinder"))
{
itemhealth = 200;
itemcost = 900;
}
}
if(i == 3)
{
if(item4.equals("abyssal mask"))
{
itemhealth = 350;
itemmana = 300;
itemmr = 55;
itemcdr = 10;
itemcost = 2900;
}
else if (item4.equals("adaptive helm"))
{
itemhealth = 350;
itemmr = 55;
itemcdr = 10;
itemcost = 2800;
}
else if (item4.equals("aegis of the legion"))
{
itemarmor = 30;
itemmr = 30;
itemcost = 1100;
}
else if (item4.equals("aether wisp"))
{
itemap = 30;
itemcost = 850;
}
else if (item4.equals("amplifying tome"))
{
itemap = 20;
itemcost = 435;
}
else if (item4.equals("ancient coin"))
{
itemcdr = 5;
itemcost = 350;
}
else if (item4.equals("archangel's staff"))
{
itemap = 80;
itemmana = 250;
itemcost = 3100;
}
else if (item4.equals("ardent censer"))
{
itemap = 60;
itemcdr = 10;
itemcost = 2300;
}
else if (item4.equals("athene's unholy grail"))
{
itemap= 30;
itemmr = 30;
itemcdr = 10;
itemcost = 2100;
}
else if (item4.equals("b.f.sword"))
{
itemad = 40;
itemcost = 1300;
}
else if (item4.equals("bami's cinder"))
{
itemhealth = 200;
itemcost = 900;
}
}
if(i == 4)
{
if(item5.equals("abyssal mask"))
{
itemhealth = 350;
itemmana = 300;
itemmr = 55;
itemcdr = 10;
itemcost = 2900;
}
else if (item5.equals("adaptive helm"))
{
itemhealth = 350;
itemmr = 55;
itemcdr = 10;
itemcost = 2800;
}
else if (item5.equals("aegis of the legion"))
{
itemarmor = 30;
itemmr = 30;
itemcost = 1100;
}
else if (item5.equals("aether wisp"))
{
itemap = 30;
itemcost = 850;
}
else if (item5.equals("amplifying tome"))
{
itemap = 20;
itemcost = 435;
}
else if (item5.equals("ancient coin"))
{
itemcdr = 5;
itemcost = 350;
}
else if (item5.equals("archangel's staff"))
{
itemap = 80;
itemmana = 250;
itemcost = 3100;
}
else if (item5.equals("ardent censer"))
{
itemap = 60;
itemcdr = 10;
itemcost = 2300;
}
else if (item5.equals("athene's unholy grail"))
{
itemap= 30;
itemmr = 30;
itemcdr = 10;
itemcost = 2100;
}
else if (item5.equals("b.f.sword"))
{
itemad = 40;
itemcost = 1300;
}
else if (item5.equals("bami's cinder"))
{
itemhealth = 200;
itemcost = 900;
}
}
if(i == 5)
{
if(item6.equals("abyssal mask"))
{
itemhealth = 350;
itemmana = 300;
itemmr = 55;
itemcdr = 10;
itemcost = 2900;
}
else if (item6.equals("adaptive helm"))
{
itemhealth = 350;
itemmr = 55;
itemcdr = 10;
itemcost = 2800;
}
else if (item6.equals("aegis of the legion"))
{
itemarmor = 30;
itemmr = 30;
itemcost = 1100;
}
else if (item6.equals("aether wisp"))
{
itemap = 30;
itemcost = 850;
}
else if (item6.equals("amplifying tome"))
{
itemap = 20;
itemcost = 435;
}
else if (item6.equals("ancient coin"))
{
itemcdr = 5;
itemcost = 350;
}
else if (item6.equals("archangel's staff"))
{
itemap = 80;
itemmana = 250;
itemcost = 3100;
}
else if (item6.equals("ardent censer"))
{
itemap = 60;
itemcdr = 10;
itemcost = 2300;
}
else if (item6.equals("athene's unholy grail"))
{
itemap= 30;
itemmr = 30;
itemcdr = 10;
itemcost = 2100;
}
else if (item6.equals("b.f.sword"))
{
itemad = 40;
itemcost = 1300;
}
else if (item6.equals("bami's cinder"))
{
itemhealth = 200;
itemcost = 900;
}
}
System.out.println("Champion: " + champion);
System.out.println("Total health: " + totalhealth);
System.out.println("Total AD: " + totalad);
System.out.println("Total AP: " + totalap);
System.out.println("Total armor: " + totalarmor);
System.out.println("Total magic resist" + totalmr);
System.out.println("Total CDR: %" + totalcdr);
System.out.println("Total mana: " + totalmana);
System.out.println("Total Critical Strike Chance: " + totalcstr);
System.out.println("Total Life Steal: %" + totalls);
System.out.println("Total Attack Speed: " + totalatcksp);
System.out.println("Total Cost: " + totalcost + "g");
}
}
}
저는 CS 첫해에 고등학생입니다. 이것은 내가 알지 못하는 간단한 대답을 가질 수 있으므로 모든 대답, 심지어 가장 분명한 대답에 열려 있습니다.
나는 논리를 훨씬 더 간단한 것으로 분해했습니다. 문자열의 배열 목록을 사용하면 if / else 검사의 수를 크게 줄일 수 있습니다.
public static void main(String[] args){
ArrayList<String> allItems = new ArrayList<>();
int numberOfItems = 6;
Scanner one = new Scanner(System.in);
System.out.println("Champion: ");
String champion = one.nextLine();
for(int i = 0; i < numberOfItems; i++)
{
System.out.println("Item " + (i + 1) + ": ");
String item = one.nextLine();
System.out.println("Adding item: " + item + " to index " + i + " of the list");
allItems.add(item);
}
int totalhealth = 0;
int totalad = 0;
int totalap = 0;
int totalarmor = 0;
int totalmr = 0;
int totalcdr = 0;
int totalmana = 0;
int totalcstr= 0;
int totalls = 0;
int totalatcksp = 0;
int totalcost = 0;
for(int i = 0; i < allItems.size(); i++)
{
if(allItems.get(i).equals("abyssal mask"))
{
totalhealth += 350;
totalmana += 300;
totalmr += 55;
totalcdr += 10;
totalcost += 2900;
}
else if(allItems.get(i).equals("adaptive helm"))
{
totalhealth += 350;
totalmr += 55;
totalcdr += 10;
totalcost += 2800;
}
//... for all the items using the += for total values
else {
System.out.println("Not a valid item: " + allItems.get(i));
allItems.remove(i);
i--;
}
}
System.out.println("Champion: " + champion);
System.out.println("Total health: " + totalhealth);
System.out.println("Total AD: " + totalad);
System.out.println("Total AP: " + totalap);
System.out.println("Total armor: " + totalarmor);
System.out.println("Total magic resist " + totalmr);
System.out.println("Total CDR: %" + totalcdr);
System.out.println("Total mana: " + totalmana);
System.out.println("Total Critical Strike Chance: " + totalcstr);
System.out.println("Total Life Steal: %" + totalls);
System.out.println("Total Attack Speed: " + totalatcksp);
System.out.println("Total Cost: " + totalcost + "g");
}
산출
Champion:
alexlchico
Item 1:
abyssal mask
Adding item: abyssal mask to index 0 of the list
Item 2:
adaptive helm
Adding item: adaptive helm to index 1 of the list
Item 3:
pikachu
Adding item: pikachu to index 2 of the list
Item 4:
adaptive helm
Adding item: adaptive helm to index 3 of the list
Item 5:
abyssal mask
Adding item: abyssal mask to index 4 of the list
Item 6:
ball of lint
Adding item: ball of lint to index 5 of the list
Not a valid item: pikachu
Not a valid item: ball of lint
Champion: alexlchico
Total health: 1400
Total AD: 0
Total AP: 0
Total armor: 0
Total magic resist 220
Total CDR: %40
Total mana: 600
Total Critical Strike Chance: 0
Total Life Steal: %0
Total Attack Speed: 0
Total Cost: 11400g
남은 일은 내가 원하는 다른 항목에 대해 심연 마스크와 적응 형 투구에 사용한 것과 동일한 논리를 사용하고 + =가있는 합계 값을 사용하여 이전 항목의 기존 계산 된 합계에 추가 할 수 있습니다. 이렇게하면 프로그램이 챔피언이 가지고있는 아이템의 반복 작업을 마치면 총계가 계산되고 최종 프린트에 챔피언이 준 모든 아이템과 함께 보유한 내용이 반영됩니다. 행운을 빕니다!
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다