2017-01-28 2 views
0

Я хотел бы начать с того, что прошло уже пару лет с тех пор, как я закодировал, так что мои знания немного шаткие. Я ищу какую-то помощь, в основном толчок в правильном направлении. Я поручено завершая программу для изменения FizzBuzz игры Правила: Введите 2 цифры от 1-9, число Fizz и ряд жужжание (например: 2 7)Вызов метода в другом, чтобы заполнить массив

  • , если п делится на fizzNumber, или содержит цифры fizzNumber, возвращение «шипение»
  • если п делится на buzzNumber, или содержит цифры buzzNumber, возвращение «гудение»
  • однако, если оба вышеуказанные условия, вы должны return "fizzbuzz"
  • Если ни одно из приведенных выше условий не является истинным, верните сам номер.

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

public String getValue(int n) { 

boolean fz = false;  //fz will symbolize fizz in my logic 
boolean bz = false; //bz will symbolize buzz in my logic 

//if n is divisible by fizzNumber, or contains the digit fizzNumber, return "fizz" 
    if(n % fizzNumber == 0 || Integer.toString(n).contains(Integer.toString(fizzNumber))) 
    fz = true; 

//if n is divisible by buzzNumber, or contains the digit buzzNumber, return "buzz" 
    if(n % buzzNumber == 0 || Integer.toString(n).contains(Integer.toString(buzzNumber))) //Check for buzz 
    bz = true; 

//if both the above conditions are true, you must return "fizzbuzz" 
if (fz == true && bz == true) 
    return("fizzbuzz"); 
//return fizz 
    else if (fz == true) 
    return("fizz"); 
//return buzz 
    else if(bz == true) 
    return("buzz"); 
// return the number itself as a String 
    else 
    return Integer.toString(n); 
} 

Теперь моя следующая цель состоит в том, чтобы реализовать метод getValues(), чтобы вернуть массив FizzBuzz значений для заданного диапазона целых чисел. Этот метод должен внутренне вызывать метод getValue() для вычисления значения fizzbuzz для одного целого и хранить его в массиве, который должен быть возвращен в конце.

public String[] getValues(int start, int end) { 
     } 

Например, если число шипение является 3 и номер гудение 4, GetValues ​​(2,7) должен возвращать массив строк:

{"2", "fizz", "buzz", "5", "fizz", 7} 

Я думал сделать это с для цикла с чем-то вроде этого

for(start = 0; end >= start; start ++){ 

    } 

, но я действительно не знаю, как реализовать метод ПолучитьЗначения в мой цикл и сохранить его в массиве.

Может ли кто-нибудь помочь мне здесь?

ответ

-1
public String[] getValues(int start, int end) { 
     List<String> valueList = new ArrayList<>(); 
     for (int i = start; i <= end; i++) { 
      valueList.add(getValue(i)); 
     } 
     String[] valueArr = new String[valueList.size()]; 
     valueArr = valueList.toArray(valueArr); 
     return valueArr; 
    } 
+0

Итак, когда вы пишете getValue (i), который принимает i и передает его через метод get value ?, – maxbr7t

+0

yes, getValue (i) вызывает ваш первый метод с i в качестве ввода. – mhshimul

+0

спасибо, поэтому за помощь много Shi – maxbr7t

0

Это должно дать вам результат, который вы хотите. Сначала вы хотите выполнить комбинированное условие, иначе оно никогда не будет достигнуто. Если число делится на оба и одновременно достигает одного из других утверждений, оно всегда будет оцениваться как истинное и никогда не достигнет комбинированного условия, если оно не будет первым.

public String[] getValues(int start, int end) { 
    List<String> vals = new ArrayList<>(); 

    for (int i = start; i <= end; i++) { 
     if (i % (fizzNumber * buzzNumber) == 0) vals.add("fizzbuzz"); 
     else if (i % fizzNumber == 0) vals.add("fizz"); 
     else if (i % buzzNumber == 0) vals.add("buzz"); 
     else vals.add(i.toString()); 
    } 

    return vals.toArray(); 
} 


int fizzNumber = 3; 
int buzzNumber = 5; 
String[] arr = getValues(10, 20); 
// ["buzz", "11", "fizz", "13", "14", "fizzbuzz", "16", "17", "fizz", "19", "buzz"] 
+0

Это, безусловно, один из способов сделать это, но это не вызывает другой метод. Однако это по-прежнему полезно для изучения того, как заполнить массив, пропуская логику. Спасибо за ответ – maxbr7t

0

Вы почти сделали свою домашнюю работу! Функция ниже с комментариями.

public String[] getValues(int start, int end) { 
    // create the storage list 
    List<String> words = new ArrayList<String>(); 
    for(int i=start; i<=end; i++){ 
     // append the string to the list 
     words.add(getValue(i)); 
    } 
    //return the stored words as String[] 
    return words.toArray(); 
} 
+0

Во-первых, спасибо за ответ. Итак, когда вы вводите getValue (i), который принимает i и запускает его через метод getValue? – maxbr7t

+0

Этот метод даст вам ошибку компилятора, не должен быть правильный ответ, пожалуйста, см. Мой ответ для запуска без каких-либо ошибок. – mhshimul

+0

Да @ maxbr7t, да. – ilke444

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