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

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

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

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

解決済

3回答

2303閲覧

テキストファイル読み込み 演算

pro

総合スコア28

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

0クリップ

投稿2017/01/29 13:31

編集2017/01/29 17:11

###前提・実現したいこと
テキストファイルを読み込み、演算する。
ファイル(テキストデータ)の読みとる列数は3、行数は不確定。
やりたい演算の例は繰り返し文による列の数値の合計の計算です。

###発生している問題・エラーメッセージ

テラテイル上で参考にしたコードなのですが、データを転置しているためよく理解できず。
0行0列は読み取れる(テキストボックスに表示できる)

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

try { is = this.getAssets().open("ファイル名"); br = new BufferedReader(new InputStreamReader(is)); String str; while ((str = br.readLine()) != null) { text.add(str); } nums = new int[3][text.size()]; for (int i = 0; i < text.size(); i++) { String[] s = text.get(i).split(" "); for (int j = 0; j < 3; j++) { nums[j][i] = (int) Integer.parseInt(s[j]); } ...

###試したこと
txtはArrayList用意。
計算結果はテキストボックスに表示。

###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報

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

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

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

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

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

guest

回答3

0

ベストアンサー

というか、
1
2
だとArrayIndexOutOfBoundsExceptionになりません?
もしかしてcatch(Exception e)にしていてそこで処理されてしまっているとかはないですか?

投稿2017/01/29 17:15

swordone

総合スコア20651

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

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

pro

2017/01/29 17:50

ご指摘の点が問題となっていました。 行列の転置の問題は解決いたしました。 ありがとうございました。
guest

0

質問をいくら読んでもこうにしかならない

java

1try { 2 3 is = this.getAssets().open("ファイル名"); 4 br = new BufferedReader(new InputStreamReader(is)); 5 6 String str; 7 while ((str = br.readLine()) != null) { 8 text.add(str); 9 } 10 nums = new int[3][text.size()]; 11 for (int i = 0; i < text.size(); i++) { 12 String[] s = text.get(i).split(" "); 13 for (int j = 0; j < 3; j++) { 14 nums[j][i] = (int) Integer.parseInt(s[j]); 15 } 16 } 17 // やりたい演算の例は、0行0列と0行1列の足し算。 18 int result = nums[0][0] + nums[0][1]; 19 20 // テキストボックスに表示 21 22 23 }catch(Exception e){ 24 } 25

投稿2017/01/29 16:01

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

pro

2017/01/29 16:13

それだと 1 2 1 2 のどちらでも結果は1となっていしまいます、、
pro

2017/01/29 16:20

12 のデータでnums[0][0]+nums[1][0]したところ3と出ましたのでそこは解決しましたが  for (int i = 0; i < text.size(); i++) { sum+=nums[i][0] } とすると0になってしまいます。最終的にはこの形で求めたいです。
退会済みユーザー

退会済みユーザー

2017/01/29 16:36

やりたいことが... 質問の内容に示されていないような気がします "ファイル名"の内容は?  そもそも合計なの?とか
pro

2017/01/29 17:11

ご指摘ありがとうございます。訂正しました。
guest

0

データの転置とはなんですか?
コードだけ見ると全て正しくリストに入っているように思いますよ。

データを表示している部分がまちがっているんじゃないでしょうか?

投稿2017/01/29 15:08

yona

総合スコア18155

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

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

pro

2017/01/29 15:36

1 2 のようなデータでnums[1][0]を表示するようにすると 0と表示されてしまいます、またnums[0][1]にしても0と表示されます 1 2  のようなデータでnums[1][0]を表示するようにすると 2と表示されるのですが。
swordone

2017/01/29 15:38

おそらく、行列の転置のことかと。 00 01 02 10 11 12 20 21 22 30 31 32 ↓ 00 10 20 30 01 11 21 31 02 12 22 32
pro

2017/01/29 15:41

そうですね、行列の転置です。 転置せず読み込みたいのですが、そこがわかりません。
swordone

2017/01/29 15:43

iとj逆にすればいいだけでは? nums[j][i] = (int) Integer.parseInt(s[j]); → nums[i][j] = (int) Integer.parseInt(s[j]);
pro

2017/01/29 15:51

iとjを入れ替えnums[1][0]を表示するようにすると0と表示されてしまいます。 ほかに原因があるみたいです、、、
pro

2017/01/29 15:51

上記は 1 2 のデータです
yona

2017/01/29 16:35

int[3][text.size()];はint[text.size()][3]にしてi,jを入れ替える。
pro

2017/01/29 17:06

やはり0と表示されてしまいます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問