🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
for

for文は、様々なプログラミング言語で使われている制御構造です。for文に定義している条件から外れるまで、for文内の命令文を繰り返し実行します。

if

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

Java

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

配列

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

Q&A

解決済

1回答

655閲覧

3つの整数がそれぞれ○○〜○○以内ならば結果を出力するプログラムの作成

tuntunn69rock

総合スコア4

for

for文は、様々なプログラミング言語で使われている制御構造です。for文に定義している条件から外れるまで、for文内の命令文を繰り返し実行します。

if

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

Java

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

配列

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

0グッド

0クリップ

投稿2021/02/21 08:43

前提・実現したいこと

モンスターの進化条件を表すコードを作成しています。

下記に入力値を記載しておりますが、例として

653 673 703
20
esezchll 419 576 203 334 815 872

攻撃力653 防御力673 素早さ703
進化先の数20
進化先のモンスター名esezchll 最小攻撃力419 最大攻撃力576 最小防御力203 最大防御力334 最小スピード815 最大スピード872

となり、攻撃力、防御力、スピード全てが
それぞれ653 673 703の範囲内に収まって入ればモンスター名を出力する、となります。

現在出力結果が
pv
rrkngndkiwxeqraicexk
sinixfwejyvj
tmhzcjxtufheajnualvzcy
xdvoinxnrqrwzbdtxjyigwsfeoeis
となっているので
正しい結果の
pv
rrkngndkiwxeqraicexk
sinixfwejyvj

に直したく、何処がおかしいのかご指摘戴きたいです

入力値

653 673 703
20
esezchll 419 576 203 334 815 872
gkjfhmcdqakoog 49 472 578 973 262 334
gmqjvcw 255 644 33 271 192 613
gotatnnfruelvnpc 212 547 478 708 51 658
hnnpgfaplaayqdlsrirr 129 210 461 664 530 759
hrtouyl 151 288 432 478 124 239
iowogwwzuucoxyekaryy 796 943 159 687 420 962
mlbdmgtzqjc 706 839 17 249 153 183
ncpunfwmhadygsqakdqysmxrfl 73 91 45 893 183 729
pv 392 977 571 826 65 780
rogxofzcbejxidujyapccqhxs 745 817 82 540 402 524
rrkngndkiwxeqraicexk 130 709 623 753 692 986
sinixfwejyvj 392 751 535 903 656 767
suecyqdfgyeomusqw 305 523 752 906 60 379
tmhzcjxtufheajnualvzcy 233 678 240 437 453 744
txmpmucrgscweez 644 991 678 894 156 499
wecenutsqkgzrsxzqrjc 153 417 158 465 534 919
xdvoinxnrqrwzbdtxjyigwsfeoeis 504 982 494 639 220 998
ypeeeotzujelpro 275 950 467 793 231 264
zadudfcivyeqvdrutmbza 297 610 369 656 290 703

該当のソースコード

java

1import java.util.*; 2 3 4public class Main { 5 public static void main(String[] args) { 6 Scanner sc = new Scanner(System.in); 7 int atk = sc.nextInt();//攻撃力 8 int def = sc.nextInt();//防御力 9 int agi = sc.nextInt();//素早さ 10 int count = sc.nextInt();//20回 11 String xxxxxxxxxx = sc.nextLine();//空白 12 String a = "";// 13 int num[] = new int[6];//進化条件6つを格納 14 int b = 0; 15 16 for(int i = 0;i<count;i++){//20回繰り返す 17 a = sc.next();//名前 18 for(int y = 0;y<num.length;y++){//6回繰り返す 19 num[y] = sc.nextInt(); 20 }//最小攻撃力,最大攻撃力,最小防御力,最大防御力,最小スピード,最大スピードを配列に格納 21 if(atk>num[0]&&atk<num[1]){//atkがnum[0]以上かつnum[1]以下 22 if(def>num[2]&&def<num[3]){//defがnum[2]以上かつnum[3]以下 23 }if(agi>num[4]&&agi<num[5]){//agiがnum[4]以上かつnum[5]以下 24 System.out.println(a); 25 }else{ 26 b++; 27 } 28 } 29 }if(b == 0){//全て該当無しだった場合 30 System.out.println("no evolution"); 31 } 32 } 33 }

出力結果

pv
rrkngndkiwxeqraicexk
sinixfwejyvj
tmhzcjxtufheajnualvzcy
xdvoinxnrqrwzbdtxjyigwsfeoeis

求める結果

pv
rrkngndkiwxeqraicexk
sinixfwejyvj

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

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

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

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

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

m.ts10806

2021/02/21 09:32

デバッグされたのでしょうか。 分岐点で変数値を追ってみれば見えることも多いかと思いますが
dodox86

2021/02/21 09:37

範囲内を判定する際の以上、以下、未満、より上、より下、をきちんと区別しましょう。使っている演算子は正しくそうなっていますか?
tuntunn69rock

2021/02/21 09:39

for(int i = 0;i<count;i++){//20回繰り返す a = sc.next();//名前 for(int y = 0;y<num.length;y++){//6回繰り返す num[y] = sc.nextInt(); } の下で出力した時、全て6回ずつ出力したので if(atk>num[0]&&atk<num[1]){//atkがnum[0]以上かつnum[1]以下 if(def>num[2]&&def<num[3]){//defがnum[2]以上かつnum[3]以下 }if(agi>num[4]&&agi<num[5]) がおかしいのかと思っております。ただ、何がおかしいのか理解出来ない為こちらに質問を投稿致しました。
m.ts10806

2021/02/21 09:40

「思う」ではなく、デバッグしてください。 分岐点で変数値を追ってみれば見えることも多いかと思いますが 。
tuntunn69rock

2021/02/21 09:46

言葉たらずで申し訳ありませんが、計算式がおかしいと「思って」デバックしましたが、何処がおかしいのか理解出来てない事、また、原因が計算式ではないと断定出来る程自信がないので質問を投稿しております。
m.ts10806

2021/02/21 09:48 編集

この質問内容でしたらデバッグしたかどうかすら伝わらないと思います。書かれてませんから。 どこをどのようにデバッグして出た「推測」なのかは具体的に質問本文に記載してください。 過去には指摘が面倒で「デバッグした」と答えたけど、実は全くデバッグしてないことが後にバレて糾弾された人もいます。 「調べた」「デバッグした」だけでは他人には何も伝わりません。
tuntunn69rock

2021/02/21 10:14

>>m.ts10806様 ご指摘戴きありがとうございます。あまりに長すぎる、分かりづらいと回答が付き辛いと見た事と、デバックした上でエラーが起きない=表記漏れが無い、また、計算式もおかしくないはずと思ったものの原因を断定出来る自信がない為この様にご質問致しました。ご参考にさせて戴きますが、私の場合初心者ながら試した上で質問しているつもりです。質問する上で何が最低限必要なのかはまだ分かっておりませんが、現にこの内容でも原因を回答して頂ける方などもおりますので自身が回答するにあたいしない質問だと思うのであれば無視して頂いてよろしいかと思います。今後質問する際の参考にさせて戴きます。ご指摘戴きありがとうございました。 >>dodox86様 シンプルかつ何処が悪いのかシンプルにご指摘戴きありがとうございます。今回のサンプルでは動作しましたが、境界値で出力されていなかった為おっしゃられてる内容が原因だと思いますのでもう一度勉強しなおします。ありがとうございました。
m.ts10806

2021/02/21 10:57

「やったことは全部書く」が原則です。 自分にとってはやりすぎるぐらいがちょうどいい。 厚意で成り立っている場 見るのは赤の他人 本当に調べず試さず丸投げする人との区別は不可能です。
tuntunn69rock

2021/02/21 11:22

ご指摘ありがとうございます。ただ、Javaもteratailも使い始めたばかりだからこそ試したことを全部書くのは私には不可能です。ここがおかしいと思ってはいたが断定出来ないと書きましたとおり、String xxxxxxxxxx = sc.nextLine();がおかしいのかと思い直したり、num.lengthだと判定しないのか直したりと、本筋と関係ない所が原因の可能性もあり、試した事全て書くのは冗長過ぎます。 何処が悪いか指摘した上でご指摘頂けるのは有難いですが、質問の仕方だけご指摘頂いても何を記載すれば良いのか回答を見るまでちんぷんかんぷんでした。先にご回答した通り、回答するにあたいしない質問であればスルーすれば良いだけであり、誰からも回答がつかなければそこで自分で質問内容を見直し訂正し成長すれば良いと私は考えております。いくら不慣れにしても回答や比較演算子の指摘をして頂ける方もいらっしゃいましたし、質問内容に触れず質問内容を長々とご指摘頂く程酷い質問の仕方だとは今も思えません。丸投げして質問する様な輩と区別するのは不可能との事ですが、ならば無理して回答しなければそれで済む話だと思っています。 長々と綴りましたが、今後の質問の仕方の参考になりましたので感謝しております。この件に関してはこれで幕引きとさせてください。
guest

回答1

0

ベストアンサー

defの判定がネストされていないからでは?

java

1if(atk>num[0]&&atk<num[1]){//atkがnum[0]以上かつnum[1]以下 2 if(def>num[2]&&def<num[3]){//defがnum[2]以上かつnum[3]以下 3// 下のif文は、この中にいれたいのでは? 4 } 5 if(agi>num[4]&&agi<num[5]){//agiがnum[4]以上かつnum[5]以下 6 System.out.println(a); 7 }else{ 8 b++; 9 } 10}

投稿2021/02/21 09:49

momon-ga

総合スコア4826

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

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

tuntunn69rock

2021/02/21 10:14

ありがとうございました。お陰で動きました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問