2017-05-10 10 views
0

私は現在、マジックキューブの問題を解決するプロジェクトを行っています。空の値を持つ配列の長さを取得する方法は?

char[] Steps = new char[200]; 

私は「F」、「B」、「R」、「L」を実行するたびに、「U」、「D」ターン方式:私はこのような手順を覚えて、アレイを作成したいです配列内に 'F'、 'B'、 'R'、 'L'、 'U'、 'D'文字を追加します。 しかし、私はステップの長さを取得したいとき、それは常に200例えば

を示しています。

steps[] = {'f','b','f','',''}; 

方法:私はすでに3つのステップを追加しました

char[] steps = new char[5]; 

となりました私は長さ '3'を得ることができますか?

また、最初に長さを設定する必要がない代替方法がありますか?あなたは空の文字を使用することはできませんし、あなたの代わりにステップ[]の手順を記述する必要があるとして

+8

なぜリストだけを使用しないのですか

+2

配列の長さは固定されています。空白であるかどうかは「スロット」の数です。 – DigiFriend

+2

''は文字に許可されていないため、コードはコンパイルされません。空の文字の概念は、あなたが定義しない限り理にかなっていません。それらを除いてchar(0)と 'Count()'を使うことができます.. – TaW

答えて

3

あなただけList<char>を使用することができますが、パフォーマンスがあなたのsceanarioで本当に重大である場合、あなただけの初期容量に次

List<char> list = new List<char>(200); 
list.Add('c'); 
list.Add('b'); 
ここ

あなたが本当に追加したものだけが返されます数えるよう

何かを初期化することができます

var c = list.Count; 

リスト内のノートあなたはLinq Count()を適用するか、単にを使用することができます

List<char> steps = new List<char>(); 

とばかりに行を追加します:あなたはこのようなことがずっと簡単になるだろう文字のリストを使用することができ、すぐに

2

あなたはこのライン

steps[] = {'f','b','f','',''}; 

にコンパイルエラーになります。 私が代わりに文字列配列を使用するためにあなたを提案し、LINQは、このように空でない要素の数を取得し使用します:

string [] steps = {"f","b","f","",""}; 
Console.WriteLine(steps.Where(x=>!string.IsNullOrEmpty(x)).Count()); 
+1

これは質問に答えていますが、私はまだBRAHIM Kamelのアドバイスに従い、固定サイズの配列ではなくリストを使用します。 – ThePerplexedOne

+0

@ ThePerplexedOneええ、私はあなたに同意するが、彼は配列とリストではないことを尋ねていた –

+0

私は知っている、あなたは彼の質問に正しく答えた。 OPのための先端のより多くだった:D – ThePerplexedOne

0

System.Linqを使用して、非空の項目カウントする:

steps.Count(x => x != '\0'); 

をあなたのコードは」doesnの実際には'\0'またはUnicode Nullで表されているchar配列の空要素を意味すると仮定しているので、''は、charとして許可されていません。したがって、上記の条件は配列内のnull以外の項目を単に数えます。

0

Linqのように計算し、結果を返す必要はありませんプロパティ各ステップのためのリスト:最後に

char move = 'F'; 
steps.add(move); 

は、あなたは

int numberofmove = steps.count(); 
簡単にリスト内の移動の数をカウントすることができます
関連する問題