文字列の文字列が好きなときには、 A = 0、B = 1のように...どのように文字をアルファベット順に並べて表示するのか
私はいくつかのコードを作ったが、私は間違った答えを得て、どこに問題があるか知っていると思うが、何が問題なのか分からない。だからここ
はコードです:
void Start()
{
i = Inventory.instance;
List<Items> items = i.returnList("Food");
Debug.Log(items.Count); List<Items> sItems = GetListSetList(items);
foreach (Items item in sItems)
{
Debug.Log(item.name);
}
}
リスト項目= i.returnList( "食品")。 < - この部分は、私が在庫を求める場所で、すべての "食べ物"のテージドアイテムを返します。コードはここにあります:
public List<Items> returnList(string tag)
{
List<Items> classifiedItemSet = new List<Items>();
foreach (Items i in items)
{
if (i.tag == tag)
{
classifiedItemSet.Add(i);
}
}
return classifiedItemSet;
}
リストsItems = GetListSetList(items); < - これは私が実際に在庫から得たものを短いリストにしようとする部分です。これは次のようになります。
private List<Items> GetListSetList(List<Items> itemS)
{
foreach (Items item in itemS)
{
GetAlphabetaValue(item);
}
List<Items> shorted = new List<Items>();
Items[] hold = new Items[itemS.Count];
foreach (Items item in itemS)
{
for (int x = 0; x < hold.Length; x++)
{
if (hold[x] == null)
{
hold[x] = item;
break;
}
else
{
bool PassIt = true;
for (int c_value = 0; c_value < item.Alphabet_value.Length; c_value++)
if (item.Alphabet_value[c_value] > hold[x].Alphabet_value[c_value])
PassIt = false;
if (PassIt)
{
for (int h_pos = hold.Length - 1; h_pos > x; h_pos--)
if (hold[h_pos] != null)
hold[h_pos] = hold[h_pos - 1];
hold[x] = item;
break; // If i use this break i get error ("NullReferenceException")
}
else continue;
}
}
}
for (int x = 0; x < hold.Length; x++)
shorted.Add(hold[x]);
return shorted;
}
私はすべてのアイテム名文字列のすべての文字に値を与えます。それはこの部分です:GetAlphabetaValue(item);私はあなたが私が話をしてみてください何を理解してほしい
private void GetAlphabetaValue(Items x)
{
x.Alphabet_value = new int[x.name.Length];
for (int c = 0; c < x.Alphabet_value.Length; c++)
{
string character = x.name.Substring(c, 1);
character.ToLower();
switch (character)
{
case "a":
x.Alphabet_value[c] = 0;
break;
case "b":
x.Alphabet_value[c] = 1;
break;
case "c":
x.Alphabet_value[c] = 2;
break;
case "d":
x.Alphabet_value[c] = 3;
break;
case "e":
x.Alphabet_value[c] = 4;
break;
case "f":
x.Alphabet_value[c] = 5;
break;
//To the end
}
}
}
:ああと申し訳ありませんが私は、この値を取得する方法、それをAlphaBeta :)オーケーに名前を付けることはこれであるDは、ありがとう:)と私は起動する前に、インターネットでいくつかの情報を見つけるしてみてくださいこれを行うが、私は本当にどのように配列から複数の文字列を短くすることができます何かを見つけることはありません。
私が間違っだと思いますが、今私はちょうど何を間違った聖霊降臨祭のことがわかりカントこの部分:
for (int h_pos = hold.Length - 1; h_pos > x; h_pos--)
if (hold [h_pos] != null)
{
hold [h_pos] = hold [h_pos - 1];
hold [x] = item;
}
ワウ、ありがとうございました。私は、より良い方法がマルチスイッチの場合のステートメントよりもそうであると考えていました。 –
'int [] Alphabet_value'の値を' sort'するコードですか? – null
そして、最後の部分は何度も見ていますが、私はクラスの指定された部分(item.Alphabet_value)を使用することができないことに気付きません。私はショートショート(アイテム)のように動作すると思っていた。 :) –