ここから本文です

javaのプログラムで質問です

alk********さん

2013/10/920:39:48

javaのプログラムで質問です

class test {
public static void main(String args[]){
int i,min=100000,minnum=0,max=0,maxnum=0 ;
int a[] = {64, 75, 40, 92, 58};
for(i=0;i<5;i++){
if(a[i]<min){
min=a[i];
i=minnum;
}
if(a[i]>max){
max=a[i];
i=maxnum;
}
}
System.out.println("最小値は"+min+"で"+minnum+"番目のデータです");
System.out.println("最大値は"+max+"で"+maxnum+"番目のデータです");
}
}

と打ちました
その結果が
--------------------
最小値は40で0番目のデータです
最大値は92で0番目のデータです
--------------------
となりました。
最小値の入ってるデータは何番目に入ってるのか
最大値の入ってるデータは何番目に入ってるのか
を表示させたいのですが共に0番目になってしまいます
どうすればいいですか?

補足等式の順序の決まりはどのようなルールなのでしょうか?

閲覧数:
152
回答数:
3

違反報告

ベストアンサーに選ばれた回答

ii3********さん

編集あり2013/10/1006:39:33

i=minnum;

minnum=i;
にする。

i=maxnum;

maxnum=i;
にする。

この2点。


補足
>等式の順序の決まりはどのようなルールなのでしょうか?
>
プログラムでは、「左辺に右辺の値を入れる」という"命令"です。
たとえば、a = b;であれば「aにbの値を入れる」です。
数学のように、「aとbの値が等しい(aとbの値を等しくする)」のような意味ではありません。

i = minnum;だと、iにmaxnumの値が入ります。
minnumの値は0ですから、iが0になります。
minnumの値が変化する命令はないので、最後まで行ってもminnumの値は0です。
したがって、「0番目のデータです」と出力されます。
minnum = i;とすると、最小値が見つかった時のiの値がminnumに入ります。
これを繰り返すことで、最小値の位置が正しく表示されます。
(maxnumについても同様)

質問した人からのコメント

2013/10/14 09:55:06

お三方回答ありがとうございました。
どの回答も甲乙つけ難かったのですが、一番早くて詳しく回答いただいたということで選ばせていただきました。
お陰でプログラムが思ったとおりに動きました。
有難うございました

ベストアンサー以外の回答

1〜2件/2件中

並び替え:回答日時の
新しい順
|古い順

ryu********さん

編集あり2013/10/1303:56:38

i=minnum;をminnum=i+1;に
i=maxnum;をmaxnum=i+1;に
すれば解決します

i=minnum;だとiにminnumを代入してしまいます

chi********さん

2013/10/1000:36:54

このQ&Aの主題の回答については
ii3pvy63さんと同様で~す。

>等式の順序の決まりはどのようなルールなのでしょうか?
あまり深堀りしなくても良いかもしれませんね。
左辺 = 右辺は、「右辺を左辺に代入する」という法則として
頭に入れておいたら良いと思います。
この等式は代入演算子と言います。

ちなみに使用する変数の型(プリミティブ型と参照型)により、
代入する内容が違うのでご注意を。
それぞれ以下の内容を代入します。
・プリミティブ型(intやlong): 変数の値
・参照型(Stringや配列): 変数が格納されているメモリ領域の場所

こちらもまた調べてみてくださいね。

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる