🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

1回答

1527閲覧

for文の中でリスト型に順番に値を入れていきたい。

TALOS

総合スコア7

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2021/01/29 11:07

編集2021/01/29 11:16

こんにちはUnity初心者です。

以下のようなスクリプトでfor文の中に順番にリスト型変数に値を入れたいのですが、デバッグでは順番に数値が出てるのに対
して、リスト型では一つしか値が入りません。
int.Parse(item.endDateTime.Substring(11, 2))には16、17、19の数字が格納されており
最終的には、
Debug.Log(myList[0]); 16
Debug.Log(myList[1]); 17
Debug.Log(myList[2]); 19
という結果を出したいです。

ご指導お願い致します。

[Serializable] public class LogData { public int contentID; public string startDateTime;//Datetime.ToString()の形式 public string endDateTime;//Datetime.ToString()の形式 public string memo; } [Serializable] public class MonthlyLog { public LogData[] logDatas; } public class InputTest : MonoBehaviour { private List<int> myList = new List<int>(); private void Start() { var path = Application.streamingAssetsPath + "/Log202101.json"; #if UNITY_ANDROID // Androidの場合はSystem.IOで直接ファイルとしてロードすることができないため、UnityWebRequestを用いる var request = UnityWebRequest.Get(path); // 注:標準ではawaitできないので何らか対応する必要がある await request.SendWebRequest(); var jsonText = request.downloadHandler.text; #else var jsonText = File.ReadAllText(path); #endif      MonthlyLog jsonData = new MonthlyLog(); JsonUtility.FromJsonOverwrite(jsonText, jsonData); foreach (var item in jsonData.logDatas) { for (int i = 0; i < 3; i++) { myList.Add(int.Parse(item.endDateTime.Substring(11, 2))); Debug.Log(int.Parse(item.endDateTime.Substring(11, 2))); } Debug.Log(myList[2]); }

イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ozwk

2021/01/29 11:12

Debug.Log(myList[2]); で何が表示されるのを期待していますか?
TALOS

2021/01/29 11:13 編集

ご質問ありがとうございます。 Debug.Log(myList[0]); 16 Debug.Log(myList[1]); 17 Debug.Log(myList[2]); 19 という結果を出したいです。
ozwk

2021/01/29 12:19

for (int i = 0; i < 3; i++) このfor文はどういう意図で? なんで全く同じことを3回繰り返しているんですか?
TALOS

2021/01/29 12:29 編集

for文なしだと、ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection.というエラーが出てしまいます。for文なしで可能なら、List変数にAddして、[0][1][2]順に表示したいです
guest

回答1

0

ベストアンサー

Debug.Log(myList[2]);
上記は、[2]の値だけ出すので、
以下のように3文書けば良いのでは?
Debug.Log(myList[0]);
Debug.Log(myList[1]);
Debug.Log(myList[2]);

【補足】
OutOfRangeだけど、
多分、forが無いときは、
myListに1回しかaddされないから、
そのあと[2]でアクセスしたときに、
「いや、こいつ(myList)1つしかデータ入ってないのに
3番目([2])は、範囲外っすわ!」
ってなってるだけだと思います。
※元コード分からないので推測ですが。。。

for文使わないなら、
3回addして、3回Log出すのでも動くと思います。

投稿2021/01/29 14:50

WhiteTempest

総合スコア404

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問