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

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

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

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

1回答

2592閲覧

java 配列代入したものを倍数計算する

domimimimimimi

総合スコア1

Java

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2021/11/07 13:59

前提・実現したいこと

配列代入したものを倍数確認をする。

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

for文やif文を用いて計算したところ代入した要素数ではなく要素番号を計算してしまっていると考えています。

エラーメッセージ

要素番号を計算してしまっている為 ※0番目から4番目
4の倍数です
48
55
68
4の倍数です
と表示されています。

該当のソースコード

ソースコード

public class sample {
public static void main(String[] args) {
//5つの要素を持ったListを宣言し、代入する
int[]list = {35,48,55,68,75};
for (int i=0; i<list.length; i++) {
if ( i % 4 == 0) {
System.out.println("4の倍数です");
}else if(i % 5 == 0) {
System.out.println("5の倍数です");
}else{
System.out.println(list[i]);
}
}
}
}

試したこと

要素番号が計算されているので for (int i=0; i<list.length; i++) { 
for文が間違っていると予想できます。※計算したい場所が参照できていない為
沢山調べたりしましたが手付かずになってしまった為、助けていただける方お願い致します。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答1

0

ベストアンサー

i % 4 == 0

などとなっているところを

list[i] % 4 == 0

という風にしたらどうでしょうか。

Java

1public class sample { 2 public static void main(String[] args) { 3 //5つの要素を持ったListを宣言し、代入する 4 int[]list = {35,48,55,68,75}; 5 for (int i=0; i<list.length; i++) { 6 int val = list[i]; 7 if (val % 4 == 0) { 8 System.out.println("4の倍数です"); 9 }else if(val % 5 == 0) { 10 System.out.println("5の倍数です"); 11 }else{ 12 System.out.println(val); 13 } 14 } 15 } 16}

投稿2021/11/07 14:06

編集2021/11/07 14:17
PC_breakman

総合スコア30

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

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

domimimimimimi

2021/11/07 14:11

iだけだと要素番号を参照してしまったんですね…理解しました!(´;ω;`) 解決致しました。ありがとうございました!
PC_breakman

2021/11/07 14:16 編集

蛇足ですがこの書き方だとifの度にメモリにいちいちアクセスするのでよくないですね。値をどっか別の変数に保持しておいた方が良いかもです。(詳細は追記)
domimimimimimi

2021/11/07 14:35

これからお仕事にしたいと思っているので、こういうのはとても有難いです。 ありがとうございます!! 他の文によってもif文などは他の変数に変えて負担を減らす事を意識した方が良いですか?
PC_breakman

2021/11/07 14:48 編集

if文というかlist[i]を何度も書くということはそれだけlist[i]がある場所に何度もアクセスするということなのでプログラムの効率が悪くなるということです。これくらいのプログラムなら大した問題にはならないですがもっと大きなプログラムを書くときに問題になるかもしれません。詳しくはメモリ、レジスタ、キャッシュなどについて調べてみるといいと思います。
jimbe

2021/11/07 19:51

>お仕事にしたい ということですので、効率に関しまして別の意見も1つ。 このレベルのコードから効率を求めることを考えるのはお勧め出来ません。 手法を知っていることはもちろん無駄にはなりませんが、それを行うのは、要求性能を満たせ無かった場合にプロファイリング等で問題箇所を特定してからでなければ、無駄にコードを弄り、読みにくいコードになるだけになります。 適切なデータ構造・アルゴリズムを用い、分かり易いクラス・メソッド分割を行うほうを先ずは意識して戴きたいです。
domimimimimimi

2021/11/18 10:45

申し訳ございません、只今拝見しました。 ありがとうございます。 見返した時にわかりやすいコードを書くのを意識してみます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問