javaで、コマンドプロンプトで実行した際に起動引数が2個以上の場合は、起動引数を降順に並び替えて出力するというプログラムを作りたいです。
まず、起動引数を昇順に並び替えて出力したいのですが、実行してもそのようになりません。
java
1public class Task1_6 { 2 public static void main(String[] args){ 3 4 if(args.length == 1){ 5 System.out.println("起動引数を2個以上指定してください"); 6 } else{ 7 for(int i = 0; i < args.length; i++){ 8 for(int j = 0; j < args.length; j++){ 9 10 if(Integer.parseInt(args[i]) > Integer.parseInt(args[j])){ 11 String tmp = (args[i]); 12 args[i] = args[j]; 13 14 args[j] = tmp; 15 16 System.out.println(args[i]); 17 } 18 19 } 20 } 21 22 } 23 24 } 25 } 26 27
それは本当にJavaScriptのコードでしょうか?Javaではありませんか?(両者は別言語です)
ご指摘ありがとうございます。
知識が身についておらずすみません。
Javaです。
ソースコードが読みにくいので、お手数をおかけして大変申し訳ありませんが、ソースコード部分を
```java
《ここにソースコードを貼り付ける》
```
という形に変更して頂けないでしょうか?
現状の問題点は4つあります。
(1)args[i]とargs[j]で値の交換ができていない
→argsはString(文字列)の配列なので、文字列しか格納できません。比較は数字にしないとできませんが、交換は文字列のまま処理すればいいのではないでしょうか?
(2)昇順になっていない
→ロジックを見直してください
(3)出力ができていない
→出力してください
(4)合計値が計算・出力されていない
→同様に計算して出力しましょう
学校の課題か何かであれば、先生がいると思うので、聞いてみましょう。
まず、ソースコードが読みにくいとのこと、大変申し訳ありませんでした。
やり方を教えていただきありがとうございました。
(1)args[i]とargs[j]で値の交換ができていない
(2)昇順になっていない
(3)出力ができていない
この点についてコードを修正してみました。
(4)合計値が計算・出力されていない
これは上記の3点の問題が解決してからにしようと思います。
問題点を指摘してくださりありがとうございました。
修正ありがとうございます。
3つと書いておきながら4つ目に気づいて慌てて追加したため、文面の数字が3つのままになっていました。すみません。3に特別な意味はないので、元のコメントを3から4に修正しました。
(1)の点のエラーは修正できたようですね。
次は(2)だと思います。
今回のソート方法はバブルソートというアルゴリズムだと思うので、詰まるようならそこから追っていくといいと思いますよ。どうしても修正しなくてはならないのはjの最初の値です。
頑張ってください。