2017-01-25 9 views
-2

Программа, которая является частью настольной игры, я пытаюсь создать это один, что:Логическая программа Error Game

1- попросить пользователя ввести значение здоровья вражескую базу (promptBaseHp()).

2- Программа генерирует множитель (2 или 3), а затем умножает его на значение здоровья базовой.

3 Значение запаса базы для врага должно быть 5,7,9,11,13 (поле массива указывает эти значения), и это то, где у меня возникают проблемы, мне нужно ПРОВЕРИТЬ ВХОД ПОЛЬЗОВАТЕЛЯ против допустимых значений (5 , 7,9,11,13).

Существует что-то неправильно, что я не могу понять, когда я запускаю программу, он предлагает пользователь дважды, даже если правильное значение (5,7,9,11,13) было введено. Может кто-то помочь мне получить функцию этой программы (справа введите значение, проверьте значение 5,7,9,11,13, а затем умножить его на 2 или 3)?

package game1; 
import java.util.Scanner; 
    import java.util.Random; 

    public class Enemy { 
    private String [] armorTyper = {  "Fire","Water","Nature","Steel","Scales","Flesh","Dark"}; 
private int [] hpValues = { 5, 7, 9, 11 ,13 }; 
private int enemyHP = 0 ; 

Scanner scanner = new Scanner(System.in); 
Random random = new Random(); 

    public int getFinalHp(){ 
    return enemyHP; 
} 


public int getMultiplier(){ 
int multiplier = random.nextInt(1) +2 ; 
return multiplier; 
} 


public int promptBaseHp(){ 

    System.out.println ("Enter base hp value (5 or 7 or 9 or 11 or 13): "); 
    int hpValue = scanner.nextInt(); 
    System.out.println(" enemy base hp entered is :"+ hpValue); 
    return hpValue; 
    } 


public void setBaseHp(){ 


boolean isAcc = comparing(promptBaseHp()); 

do{ 

if(isAcc == true){ enemyHP = getMultiplier() * promptBaseHp() ; 
getFinalHp(); 
} 
else{ System.out.println(" must be 5/7/9/11/13 ! "); 
promptBaseHp(); 
isAcc = comparing(promptBaseHp()); 
} 
}while (isAcc == false); 
} 

public boolean comparing(int val) { 
    boolean isAcc = false; 
    for (int value : hpValues){ 
    isAcc = (val == value); 
    if (isAcc == true){ return isAcc; } 
    else { System.out.println("invalid entery !"); 
    isAcc = false;} 
    } 
    return isAcc; 
    } 
} 





package game1; 

public class Exceutor { 

public static void main (String [] args){ 

    Enemy enem = new Enemy(); 

    enem.getMultiplier(); 
    System.out.println(" enemy hp multiplier is :"+ enem.getMultiplier()); 

    enem.setBaseHp(); 
    enem.getFinalHp(); 

    System.out.println(" enemy final hp is : "+ enem.getFinalHp()); 



    } 

} 

ответ

1

Настоятельно рекомендуем, чтобы вы отформатировали свой код, чтобы вам было более полезно читать.

Вы четко называя его дважды в разных местах:

else{ System.out.println(" must be 5/7/9/11/13 ! "); 
promptBaseHp(); 
isAcc = comparing(promptBaseHp()); 
} 

изменить это на

else{ System.out.println(" must be 5/7/9/11/13 ! "); 
int value = promptBaseHp(); 
isAcc = comparing(value); 
} 

Также вы называете ее дважды

boolean isAcc = comparing(promptBaseHp()); 

do{ 

if(isAcc == true){ enemyHP = getMultiplier() * promptBaseHp() ; 

изменения это:

int valueBaseHp = promptBaseHp(); 
boolean isAcc = comparing(valueBaseHp); 
do{ 
if(isAcc == true){ enemyHP = getMultiplier() * valueBaseHp ; 
+0

Спасибо, что ценю это ... –