2016-08-09 12 views
2

私はDiscordサーバー用のボットを作成しています。キャラクターが持つ可能性のあるスキルを含めて、スプレッドシートからビデオゲームについての情報を参照できるようにしています。キャラクターは基本攻撃力(BPと略される)でソートされます。スプレッドシートを参照するコードを集約しようとしています

キャラクタークラスによるフィルタリングが可能ですが、そのスキルではなく、アイテムを介して取得できるキャラクターの周りにカッコが付いています(これは何点かで、(skill + "*")と同じものを探します)。次の:

private String getSkillUsers(String skill, String class) { 

    String bp90 = ""; 
    String bp80 = ""; 
    String bp70 = ""; 
    String bp60 = ""; 
    String bp50 = ""; 
    String bp40 = ""; 
    String bp30 = ""; 

    //lfChars is a ListFeed from a Google Spreadsheet containing the chart I am referencing 
    for (ListEntry le : Main.lfChars.getEntries()) 
    { 
     CustomElementCollection cec = le.getCustomElements(); 

     if (type.equals("")) 
     { 
      if (cec.getValue("skill").equalsIgnoreCase(skill)) 
      { 
       switch (Integer.valueOf(cec.getValue("bp"))) 
       { 
       case 30: bp30 += cec.getValue("name") + ", "; break; 
       case 40: bp40 += cec.getValue("name") + ", "; break; 
       case 50: bp50 += cec.getValue("name") + ", "; break; 
       case 60: bp60 += cec.getValue("name") + ", "; break; 
       case 70: bp70 += cec.getValue("name") + ", "; break; 
       case 80: bp80 += cec.getValue("name") + ", "; break; 
       case 90: bp90 += cec.getValue("name") + ", "; break; 
       } 
      } 
      else if (cec.getValue("skill").equalsIgnoreCase(skill + "*")) 
      { 
       switch (Integer.valueOf(cec.getValue("bp"))) 
       { 
       case 30: bp30 += "(" + cec.getValue("name") + "), "; break; 
       case 40: bp40 += "(" + cec.getValue("name") + "), "; break; 
       case 50: bp50 += "(" + cec.getValue("name") + "), "; break; 
       case 60: bp60 += "(" + cec.getValue("name") + "), "; break; 
       case 70: bp70 += "(" + cec.getValue("name") + "), "; break; 
       case 80: bp80 += "(" + cec.getValue("name") + "), "; break; 
       case 90: bp90 += "(" + cec.getValue("name") + "), "; break; 
       } 
      } 
     } 
     else 
     { 
      if (cec.getValue("skill").equalsIgnoreCase(skill) && cec.getValue("type").equalsIgnoreCase(type)) 
      { 
       switch (Integer.valueOf(cec.getValue("bp"))) 
       { 
       case 30: bp30 += cec.getValue("name") + ", "; break; 
       case 40: bp40 += cec.getValue("name") + ", "; break; 
       case 50: bp50 += cec.getValue("name") + ", "; break; 
       case 60: bp60 += cec.getValue("name") + ", "; break; 
       case 70: bp70 += cec.getValue("name") + ", "; break; 
       case 80: bp80 += cec.getValue("name") + ", "; break; 
       case 90: bp90 += cec.getValue("name") + ", "; break; 
       } 
      } 
      else if (cec.getValue("skill").equalsIgnoreCase(skill + "*") && cec.getValue("type").equalsIgnoreCase(type)) 
      { 
       switch (Integer.valueOf(cec.getValue("bp"))) 
       { 
       case 30: bp30 += "(" + cec.getValue("name") + "), "; break; 
       case 40: bp40 += "(" + cec.getValue("name") + "), "; break; 
       case 50: bp50 += "(" + cec.getValue("name") + "), "; break; 
       case 60: bp60 += "(" + cec.getValue("name") + "), "; break; 
       case 70: bp70 += "(" + cec.getValue("name") + "), "; break; 
       case 80: bp80 += "(" + cec.getValue("name") + "), "; break; 
       case 90: bp90 += "(" + cec.getValue("name") + "), "; break; 
       } 
      } 
     } 
    } 

    String skillUsers = ""; 

    if (!bp90.equals("")) 
    { 
     skillUsers += "90: " + bp90.substring(0, bp90.length() - 2) + Main.LS; 
    } 
    if (!bp80.equals("")) 
    { 
     skillUsers += "80: " + bp80.substring(0, bp80.length() - 2) + Main.LS; 
    } 
    if (!bp70.equals("")) 
    { 
     skillUsers += "70: " + bp70.substring(0, bp70.length() - 2) + Main.LS; 
    } 
    if (!bp60.equals("")) 
    { 
     skillUsers += "60: " + bp60.substring(0, bp60.length() - 2) + Main.LS; 
    } 
    if (!bp50.equals("")) 
    { 
     skillUsers += "50: " + bp50.substring(0, bp50.length() - 2) + Main.LS; 
    } 
    if (!bp40.equals("")) 
    { 
     skillUsers += "40: " + bp40.substring(0, bp40.length() - 2) + Main.LS; 
    } 
    if (!bp30.equals("")) 
    { 
     skillUsers += "30: " + bp30.substring(0, bp30.length() - 2) + Main.LS; 
    } 

    return skillUsers; 

は、これは私が何かを変更したい時はいつでも編集することが非常に困難である私は、これは短くすることができますどのような方法があり、必要であれば、私は、余分なメソッドを追加することができます

答えて

1

あなたが呼ばれるMapを作成することができます。?。 baseAttackPowerを使用する代わりに、bp30-bp90を使用します。

Map<String, String> baseAttackPowers = new HashMap<>(); 

次に、あなたが取得し、そのようにそれにエントリを置くことができます:あなたは

String value = cec.getValue("bp"); 
String bp = baseAttackPowers.get(value); 
baseAttackPowers.put(value, bp + cec.getValue("name") + ", "); 

baseAttackPowers.put("123", "456"); 

代わりに初期のスイッチを、あなたはこのような何かを行うことができます同様の方法でifステートメントのチェーンを凝縮することができます。

+0

私はそれを正しく理解していないかもしれませんが、 'bp30'や他のリストにはこのシステムを使って複数の文字がリストされているようには見えません。編集:ああ、私は今それを得る。 – user4313659

+0

しかし、私はまだif文を凝縮するためにこれをどのように使うのかはまだ分かりません。 – user4313659

+0

baseAttackPowers.get(something).substring(その他) – learner0000

関連する問題