2013-04-22 7 views
2

Я довольно новичок, когда речь заходит о Java, поскольку я больше сосредоточен на Js для университета, а не на тяжелом брате ООП, и в результате я не могу достаточно правильно мои параметры.Передача параметров (новичок) (Java)

Я ищу, чтобы создать случайное число в 'generateMonsterCode' и передать его в 'selectMonster', но я не могу понять, как это сделать.

/** 
* Randomnly choose a type of monster of varying hp/mp/loot drops 
* @return rndGen 
*/ 
public int generateMonsterCode(){ 
    Random rndGens = new Random(); 
    int rndGen = 0; 

    for (int i = 1; i < 2; i++) { 
     rndGen = rndGens.nextInt(4) + 1; 
    } 

    return rndGen; 
} 

/** 
* Define which monster is chosen 
*/ 
public void chooseMonster(){ 

    switch(rndGen){ 
     case 1: System.out.println("Monster:" + rndGen); 
     case 2: System.out.println("Monster:" + rndGen); 
     case 3: System.out.println("Monster:" + rndGen); 
     case 4: System.out.println("Monster:" + rndGen); 
    }  
} 

Любая помощь будет оценена по весу!

Обновлено относительно обратной

/** 
* Randomnly choose a type of monster of varying hp/mp/loot drops 
* @return rndGen 
*/ 

public void generateMonsterCode(){ 
Random rndGens = new Random(); 
    int rndGen = 0; 

    rndGen = rndGens.nextInt(4) + 1; 

    chooseMonster(rndGen); 

} 

/** 
* Define which monster is chosen 
*/ 

private void chooseMonster(int rndGen){ 

    switch(rndGen){ 
    case 1: System.out.println("Monster:" + rndGen); 
      break; 
    case 2: System.out.println("Monster:" + rndGen); 
      break; 
    case 3: System.out.println("Monster:" + rndGen); 
      break; 
    case 4: System.out.println("Monster:" + rndGen); 
      break; 
    } 

} 

ли это, возможно, будет лучше кода практики?

+0

'public void chooseMonster (int rndGen)' – Reimeus

+4

Java и Javascript не являются братьями (или сестрами). Больше похоже на подзаконные акты, ввязанные в политический брак. – Thilo

+0

[Параметры на Java] (http://www.cs.utoronto.ca/~dianeh/tutorials/params/) ** ИЛИ ** [Передача информации методу или конструктору] (http://docs.oracle .com/JavaSE/учебник/Java/javaOO/аргументы.html) – Smit

ответ

1

Параметры указаны путем помещения их в круглые скобки рядом с объявлением метода.

public void chooseMonster() - метод, который не принимает параметров.

public void chooseMonster(int i){ принимает значение int в качестве параметра и называет его i в рамках метода.

Когда вы укажете параметр для метода, вы должны передать переменную типа, указанного при ее вызове. Итак, в generateMonsterCode() после создания случайного числа вы просто вызываете chooseMonster(rndgen).

В этом методе, вы можете обратиться к int переданному в нее:

i.doSomething();

Это имеет смысл? Дайте мне знать, если я могу объяснить все это более тщательно: я чищу некоторые фундаментальные аспекты объектно-ориентированного программирования здесь, и важно, чтобы вы поняли эти концепции, если хотите играть роль в будущем.

FYI: На другом конце декларации метода указан тип возврата - в вашем случае это пустое, что означает, что ничего не возвращается. Альтернативный способ структурирования этого будет иметь ваш метод generateMonsterCode() возвращает INT:

public int generateMonsterCode(){ 
    .... generate random number 
    return rdngen(); 

и назвать его в начале вашего метода chooseMonster().

public void chooseMonster() { 
     int i = generateMonsterCode(); 
     ... do work 
} 

Обратите внимание, что это не обязательно лучше или хуже, чем делать это по-другому, я просто упоминая его в целях объяснения.

Также FYI: @supericy подходит для цикла, который вы используете в своем случайном поколении. И вы также должны, вероятно, изучить, что делает модификатор доступа public и действительно ли он вам нужен (вы, вероятно, этого не делаете), но эти проблемы выходят за рамки вашего вопроса.

+0

Я сделал несколько изменений в OP и удалил цикл. Теперь я вижу ненужность цикла. –

Смежные вопросы