java
1package myjava; 2 3import java.io.BufferedReader; 4import java.io.IOException; 5import java.io.InputStreamReader; 6 7public class Question7 { 8 public static void main(String args[]) throws IOException { 9 System.out.println("整数を昇順で並べ替えます。"); 10 System.out.println("5個の整数を入力してください。"); 11 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 12 int j, k, l; 13 int num[] = new int[5]; 14 //文字入力5回受け付ける 15 for (int i = 0; i < num.length; i++) { 16 System.out.print((i + 1) + "個目の整数 : "); 17 String str = br.readLine(); 18 //int型に変更 19 int tmp = Integer.parseInt(str); 20 num[i] = tmp; 21 } 22 //数字を並び替える 23 for (k = 0; k < num.length - 1; k++) { 24 for (j = k + 1; j < num.length; j++){//k+1を0にしたいです 25 if (num[k] > num[j]) { 26 l = num[k]; 27 num[k] = num[j]; 28 num[j] = l; 29 } 30 } 31 } 32 //昇順出力 33 System.out.println("昇順並べ替え"); 34 for (j = 0; j < num.length; j++) { 35 System.out.print(num[j] + "\n"); 36 } 37 //最大値、最小値並び替え 38 int max = 0; 39 int min = num[0]; 40 for (int i = 0; i < num.length; i++) { 41 if (max < num[i]) { 42 max = num[i]; 43 } 44 if (min > num[i]) { 45 min = num[i]; 46 } 47 } 48 //最大値、最小値出力 49 System.out.println("最大値は" + max + "で、最小値は" + min + "です。"); 50 } 51} 52```入力した数字を昇順に並び替えるコードを書いています。数字を並び替えているfor文のところのk+1を0にして 53同じ結果を出したいです。教えていただけると幸いです。お願いします。
意図を掴みかねるご質問です。当方で実際の動きを確認した訳ではありませんが、現状のコードで昇順にソートされて、機能は満たされているのではないのですか?
> for (j = k + 1; j < num.length; j++) { //k+1を0にしたいです
を
for (j = 0; j < num.length; j++) {
にして動くようにしたいと言うことでしょうか。そうした場合にどうコードを書けば同じ結果になるのか、と言う課題ですか?
言葉足らずですみません。その通りです。
もとのコードはご自身で書かれたものですか? そうではない場合、理解されていますか? そこが出発点です。 厳しいことを書くと、「同じ結果を出したい。教えてください。」だと単なる丸投げです。
ご提示のコードだと、
for (j = k + 1; j < num.length; j++) { //k+1を0にしたいです
で、{の後全角スペース入ってます。
K_3578さんの[2021/03/31 10:05]のコメントより:
> で、{の後全角スペース入ってます。
ああ、もしコンパイル(ができない)だけの問題であるならば、質問の性質が変わりますね。
確かに、UTF-8でもシフトJISでもコンパイルエラーになります。
多分コンパイルエラーだけではないと思いますが・・・。
質問者さんが結局どこで詰まったのか書いてないのでとりあえずこのままだと
コンパイルエラー出るよねぐらいしか言えないです
あくまで想像ですが、これが課題だとしたら「kを0から始めることによって、比較対象を常に先頭から何度も見る。そうすることで元のコード、考え方よりいかにややこしくなるか、実装して体験し、元のコードの意味を再確認せよ。」のような意図だと思われますが、本当にそうなら、ちょっと意地悪かもしれませんね。
@dodox86さん
多分クラス名からして何かしらの教本、参考書の課題かなーとは思います。
>「kを0から始めることによって、比較対象を常に先頭から何度も見る。そうすることで元のコード、考え方よりいかにややこしくなるか、実装して体験し、元のコードの意味を再確認せよ。」
これは確かに意地悪。