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

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

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

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

Q&A

解決済

1回答

2318閲覧

java 配列とif文による計算

ponperi

総合スコア1

Java

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

0グッド

0クリップ

投稿2020/06/15 09:11

前提・実現したいこと

javaで2つの配列の要素を比較し、要素同士の合計値の結果により異なるメッセージを出力させようとしています。
・2つの数値がどちらも 60 以上
・2つの数値の合計が 130 以上
・2つの数値の合計が 100 以上かつ、どちらかの数値が 90 以上
・条件対象外
if文それぞれを実行するとうまくいくのですが、上記の条件4つを合わせると思うような結果になりません。

どうにもpoint2の配列の要素が判定されていないように思うのですが、それが何故だかわかりません。
どうかお力をお貸しいただけないでしょうか。

public class Main { public static void main(String[] args){ int[] point1 = {50,85,62,95,40,5}; int[] point2 = {85,30,65,20,80,92}; for(int s : point1) for(int j : point2) if(s > 60 && j > 60){ System.out.println("両数値60点以上"); break; }else if((s + j) > 130){ System.out.println("合計130点以上"); break; }else if((s + j) > 100 && s > 90 || j > 90){ System.out.println("合計100点以上かつどちらか90点以上"); break; } else { System.out.println("条件対象外"); break; } } }

実行結果

合計130点以上
両数値60点以上
両数値60点以上
両数値60点以上
条件対象外
条件対象外

以上、宜しくお願い致します。

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

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

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

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

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

guest

回答1

0

ベストアンサー

break;をすべて削除してください。breakは一番内側のループからの脱出なので、条件が成立した時点でpoint2の要素をすべて組み合わせることなく内側のforから脱出してしまいます。

追加分:
2つの配列の同じ添え字の要素同士を比較せよ、という問題だと判明したので修正。
2つのfor文を削除し、次のfor文に入れ替える。

Java

1for (int i = 0; i < 6; i++) { 2 int s = point1[i]; 3 int j = point2[i]; 4 // ここにif文を全部挿入 5}

投稿2020/06/15 09:20

編集2020/06/15 10:16
Daregada

総合スコア11990

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

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

ponperi

2020/06/15 10:00

お早い回答ありがとうございます。 今試してみたところ、実行結果が以下のようになってしまいました。 6回以上判定しています、、 ↓ 合計130点以上 条件対象外 条件対象外 条件対象外 合計130点以上 合計130点以上 両数値60点以上 条件対象外 両数値60点以上 条件対象外 両数値60点以上 両数値60点以上 両数値60点以上 条件対象外 両数値60点以上 条件対象外 両数値60点以上 両数値60点以上 両数値60点以上 合計100点以上かつどちらか90点以上 両数値60点以上 合計100点以上かつどちらか90点以上 両数値60点以上 両数値60点以上 条件対象外 条件対象外 条件対象外 条件対象外 条件対象外 合計130点以上 条件対象外 条件対象外 条件対象外 条件対象外 条件対象外 合計100点以上かつどちらか90点以上 なぜこのような結果となるのかわかりません。 頼り切りとなってしまい、大変申し訳ございませんが、御教授願いたいです。 宜しくお願いいたします。
Daregada

2020/06/15 10:09

いや、問題文がはっきりせず、コードから見て「point1とpoint2の要素のすべての組み合わせに対して判定を行なえ」ということかと思ったのですよ。実際、結果が36個出ていますよね。 そうではなく「point1とpoint2に同数の要素があり(この例では6個)、point1[0]とpoint2[0]を比較、point1[1]とpoint2[1]を比較、とすべての要素に対して同じ添え字の要素同士を比較せよ」という問題のようですね。問題文からははっきりとは読み取れませんが。
ponperi

2020/06/15 10:41

お返事いただきありがとうございます。 わかりづらい質問をしていまい、申し訳ございません。 返信文中にあります以下の解釈のとおりです。 >>「point1とpoint2に同数の要素があり(この例では6個)、point1[0]とpoint2[0]を比較、point1[1]とpoint2[1]を比較、とすべての要素に対して同じ添え字の要素同士を比較せよ」 追記ありがとうございます。 無事期待通りの結果が出力されました。 長々とお付き合いいただき、本当にありがとうございました。 for文で2つの配列の要素をカウントアップすることが出来るのですね。 大変勉強になりました!
Daregada

2020/06/15 11:11

おつかれさま。質問を解決済みにしてね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問