2017-01-16 21 views
0

私はC#でリーグの伝説のAPIを使用するプログラムを作ろうとしています。forループの後でコードの実行が停止しますか?

APIを使いやすくするNuGetパッケージが見つかりました。

最初はループのために の後にコード実行が停止する以外はすべて正常に動作します。ここで

コードです:私はゲーム機能や入力iのループと」doesnのために最初に到達した召喚の名前を呼ぶ

string[] summnames; 
long[] champids; 
long[] teamids; 
long[] champs; 

CreepScoreAPI.ParticipantLive[] enemy; 
CreepScoreAPI.ParticipantLive[] ally; 
CreepScoreAPI.ParticipantLive centsumm; 
CreepScoreAPI.ParticipantLive[] champsss; 
CreepScoreAPI.ChampionStatic[] champions; 
CreepScoreAPI.Summoner[] sumners; 
CreepScoreAPI.League[] leaguesz; 

Dictionary<string, List<CreepScoreAPI.League>>[] leagues; 

int[] champidsint; 
string[] champnames; 

int s; 
int se; 

public async Task<string> game(string summname) 
{ 
    string data; 

    CreepScoreAPI.CreepScore cs = new CreepScoreAPI.CreepScore("api key"); 

    var summoner = await cs.RetrieveSummoner(CreepScoreAPI.CreepScore.Region.EUNE, summname); 
    long summid = summoner.id; 
    var thegame = await summoner.RetrieveCurrentGameInfo(); 

    CreepScoreAPI.ParticipantLive[] participants = thegame.participants.ToArray(); 

    for (int i = 0; i <= 9; i++) { summnames[i] = participants[i].summonerName;} 

    for (int i = 0; i <= 9; i++) { champids[i] = participants[i].championId;} 

    for (int i = 0; i <= 9; i++) { teamids[i] = participants[i].teamIdLong;} 

    for (int i = 0; i <= 9; i++) { champids[i] = participants[i].championId;} 

    for (int i = 0; i <= 9; i++) { champidsint[i] = Convert.ToInt32(champids[i]);} 

    for (int i = 0; i <= 9; i++) { champions[i] = await cs.RetrieveChampionData(CreepScoreAPI.CreepScore.Region.EUNE, champidsint[i], CreepScoreAPI.Constants.StaticDataConstants.ChampData.All, "en_US", "7.1.1",false); } 

    for (int i = 0; i <= 9; i++) { champnames[i] = champions[i].name; } 

    for (int i = 0; i <= 9; i++) { sumners[i] = await cs.RetrieveSummoner(CreepScoreAPI.CreepScore.Region.EUNE, summnames[i]); } 

    for (int i = 0; i <= 9; i++) { leagues[i] = await sumners[i].RetrieveLeague(); } 

    /* teamsorter */ 
    foreach (CreepScoreAPI.ParticipantLive p in participants) 
    { 
     if (p.summonerId == summid) 
     { 
      centsumm = p; 
     } 

     if (p.teamIdLong == centsumm.teamIdLong) 
     { 
      ally[s] = p; 
      s++; 
     } 
     if (p.teamIdLong != centsumm.teamIdLong) 
     { 
      enemy[se] = p; 
      se++; 
     } 
    } 

    data = " I'LL FORMAT A STRING THAT OUTPUTS ALL THE DATA I NEED HERE"; 
    return data; 
} 

(もちろん私は、APIキーを取り出しました) summnames []配列に値を設定してもエラーコードなしで実行を停止します。

私はすべてのループで何をしようとしていますが、私は後で他の目的のために使用することができますので、私は関数の前に行った変数を設定します。

+6

配列を 'summnames'や他の配列に割り当てることは決してありません。そして、それらをすべてサイズ10にすると、ただ一つの 'for'ループを使うことができます。 – juharr

答えて

0

私はあなたがこの問題を解決することができ、すべての配列を割り当てて、少なくとも10

にその長さを設定するべきだと思います。

+1

「すべての配列を割り当てる」とは、誰かが緑色になっているため、それらを初期化するのに十分な知識がないということです。あなたはそれが非常に具体的な何かを意味すると想定することはできません。 –

+0

... 2番目の考えでは、OPが答えを受け入れるならば、彼は明らかに彼のケースで十分に表していました。 –

関連する問題