2014-12-30 6 views
-2

내가 선수에게 원하는 그것이 작동하지만 서버 충돌 또는 전혀 작동하지 종료하는 방법을 내려고 노력 지능 []랜덤 지능은 []

public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) { 


Player player = (Player) sender; 

if(commandLabel.equalsIgnoreCase("surprise")){ 
Random random = new Random(); 

PlayerInventory inventory = player.getInventory(); 
int ItensIds[] = {274, 313, 314, 315, 316}; 
ItemStack item = new ItemStack(Material.AIR); 



for(int Ids : ItensIds){ 

    int randomNumber = random.nextInt(300); 
    do{ 
     randomNumber = random.nextInt(300); 
     item.setTypeId(Ids); 
     inventory.addItem(item); 
    } while(randomNumber == Ids); 

    break; 
} 

} 

임에 임의의 항목을받을 수 있습니다.

정말이 코드를 처음 접했을 때, 저는 정말로 잘못된 것을 이해했습니다.

+1

언제 예외입니까? 왜 난수를 두 번 생성합니까? 'for' 루프의 포인트는 어쨌든 첫 번째 반복 후에 깨는 것입니다. –

+0

'do {...} while (randomNumber == Ids);의 요점은 무엇입니까? – August

+0

지금 코딩을 많이하지 않습니다. 뭔가 잘못했으면 나를 고쳐주세요. – BlackDereker

답변

2

방금 ​​수,

당신이 (ItensIds[]입니다) 당신의 int 배열에서 임의의 값을 얻고 싶다면 "나는 Int 인 []에서 임의의 항목을받는 플레이어 싶다" 다음을 수행하십시오 :

int randomNumber = ItensIds[random.nextInt(ItensIds.length)]; 

루프가 필요하지 않습니다.