2017-01-25 3 views
-2

ボードゲームの一部であるプログラムは、私が作成しようとしています、1つです。論理エラーゲームプログラム

2-プログラムは乗数(2または3)を生成し、それにベースヘルス値を掛けます。

3-エネミーベースのヘルス値は5,7,9,11,13(配列フィールドはこれらの値を示します)でなければなりません。問題が発生した場合は、ユーザー入力を許容値(5 、7,9,11,13)。

私は理解できない間違いがあります。プログラムを実行すると、正しい値(5,7,9,11,13)が入力されたとしても、ユーザーに2度のプロンプトが表示されます。 誰かがこのプログラムの機能を正しく手に入れることができますか(値を入力し、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

コードを書式設定してお読みになることを強くお勧めします。あなたは明らかに複数の場所でそれを2回呼び出している

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

ありがとうございます... –