質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

855閲覧

.csvを読み込み配列に変換したが正しい数値を示さない。

testyoutatsu

総合スコア29

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2017/12/01 09:35

編集2017/12/02 07:45

いつもこちらにはお世話になっています。
先日始めたばかりのプログラミング初心者です。基礎から間違えてるかもしれません。

###前提・実現したいこと
.csvを読み込み、改行、カンマの順に分割して配列「array[][]」に格納しました。
この時点で print(array) を実行したところ、以下のソースコードの一番下のように出力されました。
問題なく格納できています。

次に配列から一列の数値を取り出し変数candle11,candle12、candle13に代入するため以下のようなコードを書きました。

candle1 = Int(array[randomNum()][0])!
candle2 = Int(array[randomNum()][1])!
candle3 = Double(array[randomNum()][2])!

random()はランダムな数字(0~11)です。

candle1 = candle2 にならないといけないはずなのですが、それぞれ違う値になってしまいます。

print (candle1) // 1
print (candle1) // 4
print (candle1) // 2.0
このように全てバラバラな値になってしまいます。

この問題はどのようにしたら解決できますでしょうか?

###該当のソースコード

swift

1問題のコード 2candle = Int(array[randomNum()][1])! 3 4 5.csvのデータはこれです。】 61,1,1 72,2,2 83,3,3 94,4,4 105,5,5 116,6,6 127,7,7 138,8,8 149,9,9 1510,10,10 1611,11,11 1712,12,12 18 19 20print(array)//実行した結果が下 21[["1", "1", "1"], ["2", "2", "2"], ["3", "3", "3"], ["4", "4", "4"], ["5", "5", "5"], ["6", "6", "6"], ["7", "7", "7"], ["8", "8", "8"], ["9", "9", "9"], ["10", "10", "10"], ["11", "11", "11"], ["12", "12", "12"], [""]] 22 23

回答よろしくお願いします。

###追記・試したこと
ソースコードを大きく変更しました。
エラーをわかりやすくするため.csvのデータを1-12を羅列したものに変更しました。
1つだけ数値がおかしいと思っていましたが、3つの数字がバラバラであることがわかりました。

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

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

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

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

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

fuzzball

2017/12/01 11:53

print(Int(array[1][1])!) が0、print(Int(array[3][1])!) が1になるのでしょうか?
fuzzball

2017/12/01 13:39

こちらでは、そういうことにならないのですが。
testyoutatsu

2017/12/02 07:48 編集

質問文とソースコードを変更しました。
guest

回答1

0

ベストアンサー

randomNum()は、その名の通り呼び出すたびにランダムな値を返すのではないでしょうか?

そうであれば、質問のコードだと、arrayに与える乱数値が3つとも違うものになってしまいます。(たまたま同じ場合はありますが)

下記コードのように、同じ値を与えるようにしないといけません。

swift

1let random = randomNum() 2candle1 = Int(array[random][0])! 3candle2 = Int(array[random][1])! 4candle3 = Double(array[random][2])!

それよりも、最初に1セット分まとめて取得する方が良いですね。

swift

1let candles = array[randomNum()] 2print(candles) 3//=> ["4", "4", "4"] 4 5candle1 = Int(candles[0])! 6candle2 = Int(candles[1])! 7candle3 = Double(candles[2])! 8print(candle1, candle2, candle3) 9//=> 4 4 4.0

投稿2017/12/02 08:47

fuzzball

総合スコア16731

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

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

testyoutatsu

2017/12/02 09:24

言われてやっと気づきました。本当にしょうもない質問に回答いただきありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問