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

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

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

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

ArrayList

Java用のタグです。arrayListはListインターフェースを実装した、リサイズ可能な配列用クラスです。

Q&A

解決済

3回答

6646閲覧

javaのarraylistに格納された値の計算について

hide09090909

総合スコア68

Java

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

ArrayList

Java用のタグです。arrayListはListインターフェースを実装した、リサイズ可能な配列用クラスです。

0グッド

0クリップ

投稿2017/09/06 08:25

編集2017/09/06 23:25

javaのarraylistに格納された値の計算についての質問です。
arraylistに格納される要素数は状況によって変動する場合、下記の部分がわかりません。
わかっている部分も確認を含めて記載させていただきます。

1.arraylistに格納された要素数の取得について(確認)
⇒array.size()関数で取得

2.arraylistに格納された値を計算に使用する方法について(確認)
⇒値をint等にキャスト

3.arraylist格納された値を使用する方法について(質問)
⇒下記の様な計算を行う際はfor文で回せばよいと考えているのですが、どういう風にコーディングすればよいか分からず困っております。
for文で記述という認識があっていれば、書き方のサンプルを、もっと良い方法があれば教えていただきたいです。
(2番目に格納された値)-(1番目に格納された値)+(4番目に格納された値)-(3番目に格納された値)+(6番目に格納された値)-(5番目に格納された値)…/格納数

計算の説明をすると下記のようになります。
・2番目の要素値から1番目の要素値を引く
・4番目の要素値から3番目の要素値を引く
・6番目の要素値から5番目の要素値を引く
・それぞれの計算結果を最後に足して、要素数で割るということです。

大変お手数ですがよろしくお願い致します。

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

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

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

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

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

swordone

2017/09/06 13:21

3番の「継続的に使用する」とはどういう意味ですか?その後に続く文との関連性がわかりません。
hide09090909

2017/09/06 23:25

すみません。修正しました
guest

回答3

0

要するにそのまま足すか-1倍して足すかが交互に来るので、

java

1import java.util.Arrays; 2import java.util.List; 3 4public class Q91392 { 5 public static void main(String[] args) { 6 List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6); 7 double result = 0.0; 8 double k = -1.0; //符号要素 9 for (Integer i : list) { 10 result += k * i; 11 k = -k; //1つごとに符号反転 12 } 13 System.out.println(result / list.size()); 14 } 15}

なお、Integerとintはキャストしなくても自動的に相互変換します。(オートボクシング/オートアンボクシング)

投稿2017/09/06 15:05

編集2017/09/06 15:06
swordone

総合スコア20651

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

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

0

要素が偶数番目なら足す、奇数番目なら引く⇒その後、全体の要素数で割りたいというのであれば、下記の様に書けると思います。

java

1import java.util.ArrayList; 2import java.util.Arrays; 3import java.util.List; 4 5public class TestJava { 6 public static void main(String[] args){ 7 List<Integer> list = new ArrayList<>(Arrays.asList(1,2,3,4,5,6)); 8 double result = 0.0; 9 for(Integer i=0;i<list.size();i++){ 10 if( (i+1)%2 == 0){//1番目の引数を1として扱う為(i + 1)としています 11 result += list.get(i);//偶数番目の引数の場合は足し算 12 }else{ 13 result -= list.get(i);//奇数番目の引数の場合は引き算 14 } 15 } 16 result = result / list.size();//全体の要素数で計算結果を割る 17 System.out.print(result); 18 } 19}

投稿2017/09/06 08:58

motuo

総合スコア3027

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

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

hide09090909

2017/09/06 23:26

すみません。質問文が悪かったようです。 やりたいのは下記のようなことです。 計算の説明をすると下記のようになります。 ・2番目の要素値から1番目の要素値を引く ・4番目の要素値から3番目の要素値を引く ・6番目の要素値から5番目の要素値を引く ・それぞれの計算結果を最後に足して、要素数で割るということです。
hide09090909

2017/09/06 23:27

すみません。質問文が悪かったようです。 やりたいのは下記のようなことです。 計算の説明をすると下記のようになります。 ・2番目の要素値から1番目の要素値を引く ・4番目の要素値から3番目の要素値を引く ・6番目の要素値から5番目の要素値を引く ・それぞれの計算結果を最後に足して、要素数で割るということです。
guest

0

ベストアンサー

要素数が偶数であることが保証されているなら、こういう書き方でいいんじゃないでしょうか。

Java

1double result = 0.0; 2for(int i = 0; i < array.size(); i+=2) { 3 result += array.get(i+1) - array.get(i); 4} 5result /= array.size();

もし、『偶数番目/奇数番目なら足す/引く』といった一般的な動作を期待しているのなら。
for文で全ての要素にアクセスし、添え字の偶奇によって分岐すればよいでしょう。


確認したい点がいくつかあるようですが、そのような場合はまず調べてみましょう。
http://docs.oracle.com/javase/jp/7/api/java/util/ArrayList.html
https://www.javadrive.jp/start/arraylist/index1.html

投稿2017/09/06 08:36

編集2017/09/06 08:50
LouiS0616

総合スコア35660

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

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

hide09090909

2017/09/06 23:27

すみません。質問文が悪かったようです。 やりたいのは下記のようなことです。 計算の説明をすると下記のようになります。 ・2番目の要素値から1番目の要素値を引く ・4番目の要素値から3番目の要素値を引く ・6番目の要素値から5番目の要素値を引く ・それぞれの計算結果を最後に足して、要素数で割るということです。
swordone

2017/09/07 01:41

-(1番目)+(2番目)-(3番目)+(4番目)-(5番目)+(6番目)-…としていくのと本質的に何が違うのでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問