2017-01-28 5 views
0

私はコード化されてから数年経っていると言って始めたいと思います。私の知識は少し不安です。私はいくつかの助け、基本的に正しい方向へのプッシュを探しています。 は、私がFizzBu​​zzゲームのバリエーションのためのプログラムを完了する使命を帯びています、ルールは以下のとおりです。 フィズ番号や話題の番号(例:2 7)、1-9からの2桁の数字を入力し配列を作成する別のメソッドを呼び出す

  • n個の場合fizzNumberで割り切れる、またはnがbuzzNumberで割り切れるか、しかし桁buzzNumber、リターン「話題」
  • が含まれ、上記の両方の条件に該当する場合は、あなたがしなければならない場合は桁fizzNumber、リターン「フィズ」
  • が含まれています"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); 
} 

今、私の次の目標は、整数の与えられた範囲についてfizzbuzz値の配列を返すために、getValues()メソッドを実装することです。このメソッドは、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 ++){ 

    } 

のようなものを持つforループが、私は本当に私のループにgetValueメソッドを実装し、配列に格納する方法がわかりません。

誰でもお手伝いできますか?

答えて

-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

を渡すと、getValue(i)はiを入力として使用して最初のメソッドを呼び出します。 – mhshimul

+0

助けを借りてくれてありがとうございます。 – maxbr7t

0

これは、あなたが望む結果を与えるはずです。結合された条件を最初に実行したい場合は、それ以上到達しません。数字が両方で割り切れて、最初に他のステートメントの1つに到達すると、それは常に真と評価され、最初のものでない限り結合条件に達しません。

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)を入力してgetValueメソッドを通して実行しているときは? – maxbr7t

+0

このメソッドは、コンパイラのエラーを与える、正しい答えではないはずです、私の答えはエラーなしで実行する参照してください。 – mhshimul

+0

はい@ maxbr7t、そうです。 – ilke444

関連する問題