[英]run program 1000 times in java
我編寫了一個程序,模擬了3個參與者之間的決斗。 三個參與者中的每一個在射擊方面都有不同的准確性。 決斗中的每個參與者都輪流射擊,並遵循相同的策略:每個參與者朝有機會在轉牌上擊中他們的人射擊。 該程序完全按照我想要的方式運行,一直運行到三個決斗中的兩個都不出現,然后打印出決斗的獲勝者。
我對該程序的下一個任務是再次打印該程序1000次,然后計算每個參與者獲勝的次數。 我在設置循環以打印每個對決時遇到麻煩。 我認為我應該對外部循環使用for循環,但是到目前為止,我遇到的問題包括無限循環,或者每個決斗中的結果都不一致。
這是我的代碼:
public class Duel {
public static void main(String[] args) {
// TODO Auto-generated method stub
Dueler Aaron = new Dueler();
Dueler Bob = new Dueler();
Dueler Charlie = new Dueler();
Aaron.setName("Aaron");
Aaron.setAccuracy(33);
Bob.setName("Bob");
Bob.setAccuracy(50);
Charlie.setName("Charlie");
Charlie.setAccuracy(100);
//Aaron
int deathCount = 0;
while(deathCount < 2 ){
if(Aaron.isLiving() == true && Charlie.isLiving() == true){
System.out.println("Aaron shoots first");
System.out.println("Aaron shoots at Charlie");
Aaron.shootAtTarget(Charlie);
if(Charlie.isLiving()==false){
System.out.println("Charlie is hit");
System.out.println("Charlie is out");
deathCount++;
}
if(Charlie.isLiving() == true){
System.out.println("miss");
}
}
else if(Aaron.isLiving() == true && Charlie.isLiving() == false){
System.out.println("Aaron shoots at Bob");
Aaron.shootAtTarget(Bob);
if(Bob.isLiving() == false){
System.out.println("Bob is hit");
System.out.println("Bob is out");
deathCount++;
}
if(Bob.isLiving() == true){
System.out.println("miss");
}
}
System.out.println(" ");
//Bob
System.out.println("Bob shoots next");
if(Bob.isLiving() == false){
System.out.println("Bob has already been hit");
}
if(Bob.isLiving() == true && Charlie.isLiving() == true){
System.out.println("Bob shoots at Charlie");
Bob.shootAtTarget(Charlie);
if(Charlie.isLiving() == false ){
System.out.println("Charlie is hit");
System.out.println("Charlie is out");
deathCount++;
}
if(Charlie.isLiving() == true){
System.out.println("miss");
}
}
else if(Bob.isLiving() == true && Charlie.isLiving() == false){
System.out.println("Bob shoots at Aaron");
Bob.shootAtTarget(Aaron);
if(Aaron.isLiving() == false){
System.out.println("Aaron is hit");
System.out.println("Aaron is out");
deathCount++;
}
if(Aaron.isLiving() == true){
System.out.println("miss");
}
}
//Charlie
System.out.println(" ");
System.out.println("Charlie shoots last");
if(Charlie.isLiving() == false){
System.out.println("Charlie has already been hit");
}
else if(Charlie.isLiving() == true && Bob.isLiving() == true){
System.out.println("Charlie shoots at Bob");
Charlie.shootAtTarget(Bob);
if(Bob.isLiving() == false){
System.out.println("Bob is hit");
System.out.println("Bob is out");
deathCount++;
}
}
if(Aaron.isLiving() == false && Bob.isLiving() == false){
System.out.println("Charlie is the winner");
System.out.println(" ");
}
else if(Aaron.isLiving() == false && Charlie.isLiving() == false){
System.out.println("Bob is the winner");
System.out.println(" ");
}
else if(Bob.isLiving() == false && Charlie.isLiving() == false){
System.out.println("Aaron is the winner");
System.out.println(" ");
}
}
}
謝謝你們每一個人的幫助!
最簡單的方法是使用for
循環。
public static void main(String[] args){
for(int i = 0; i < 1000; i++){
//Insert your code
}
}
在那之后,您想要擁有每個人獲勝次數的全局變量。
int aaronWins = 0;
int charlieWins = 0;
int bobWins = 0;
當您檢查獲勝者時,您將根據獲勝者在總獲勝者中加一。 (偽代碼)
if Aaron won:
aaronWins++
在您的for
循環之外,您可以打印獲勝最多的人。 (偽代碼)
if aaronWins > charlieWins && aaronWins > bobWins:
print "Aaron won the most!"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.