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

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

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

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

Q&A

解決済

3回答

297閲覧

mainArrayListとCompareToを使って数値を降順にソートしたい

study_m

総合スコア24

Java

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

0グッド

0クリップ

投稿2017/09/24 15:01

編集2017/09/25 01:26

###前提・実現したいこと
1~10までの数値を生成して降順にソートしたいです。
メインクラスの呼び出しかたがわかりません。(コンストラクタを呼び出したい)
呼び出し部分の内容の構成がわからないので、呼び出し部分をどうかけばいいのか教えてほしいです。
比較はcompareToで隣通しを比較しています。

初心者なのでかみ砕いて優しく説明いただけると助かります。

###該当のソースコード

import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class ArrayNumber { public static List <Integer> sort(boolean mode ,List<Integer>orgList){ List <Integer>newList = new ArrayList<Integer>(); Iterator<Integer>iter =orgList.iterator(); while(iter.hasNext()){ newList.add(iter.next()); } //ソート処理 while( true){ boolean isWorked =true; for( int i=0; i<newList.size(); i++){//size : int temp; int result =newList.get(i).compareTo(newList.get(i+1));//隣通しの値を比較 isWorked =false; switch( result){ case -1://引数の方が大きい時 if( mode==false){//降順にソートのときの動作 temp =newList.get(i); newList.set(i, newList.get(i+1)); newList.set(i+1, temp); isWorked =false; } break; case 1://引数の方が小さい時 if( mode==true ){//昇順にソート temp =newList.get(i);//[i]番目の値を退避 newList.set(i, newList.get(i));//[i]番目に[i+1]番目の値をコピー newList.set(i, temp); isWorked =false;//項目の入れ替えを行ったのでまだ処理途中 } break; case 0://実装しない break; } } if(isWorked==true){//ソート処理が終わった break;//抜ける } } return newList; } } ★★呼び出すクラス-------------------------- import java.util.List; public class ArraySortCall { public static void main(String[] args) { ArrayNumber call = new ArrayNumber(); ArrayNumber.sort(mode, orgList); System.out.println(call); } }

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

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

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

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

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

LouiS0616

2017/09/24 15:04

『プログラムの実行の仕方がわからない』ということですか?
study_m

2017/09/24 15:07

呼び出し部分の記述の仕方(どう構成すればいいのか)がわからないという意味です!
ykws

2017/09/24 15:09

どんな環境で実行させようとしているのでしょうか?
study_m

2017/09/24 15:12

環境はEclipse、バージョンはJava8です。
退会済みユーザー

退会済みユーザー

2017/09/24 15:15

static void main の引数は `(String[] args)` 固定ですよ・・・
guest

回答3

0

  • プログラムの入り口は

java

1public static void main(String[] args) { 2 //ここからスタート 3} 4```です。booleanとかList<Integer>とか、そんな変な引数を持つmainメソッドは入り口認識されません。 5- 新しいListを作成して返すなら「隣同士比較」なんていらないのでは?選択ソートのように、大きいもの(降順の場合)から順に新しいListにaddしていけばいい話です。 6- そもそも新しいListを作るのだって、イテレータから順次追加とかいりません。 7```java 8List<Integer> newList = new ArrayList<>(orgList); 9```のようにすれば一発で済みます。 10- compareToの仕様として定められているのは「2つの要素の大小に応じて正の値、負の値、0のいずれかを返す」ことであり、1,-1,0として定められているわけではありません。 11 12…まだまだあるのですがこのくらいにしておきます。残りは気が向いたら書きます。

投稿2017/09/24 17:53

swordone

総合スコア20649

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

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

study_m

2017/09/25 01:30

色々とありがとうございます。
guest

0

ベストアンサー

メインクラスの呼び出しかたがわかりません。(コンストラクタを呼び出したい)
呼び出し部分の内容の構成がわからないので、呼び出し部分をどうかけばいいのか教えてほしいです。

この記述を素直に読んで、最初はmain関数が実行できないのかと思いました。
ですので、次のように質問いたしました。

『プログラムの実行の仕方がわからない』ということですか?

次のような返答がありました。

呼び出し部分の記述の仕方(どう構成すればいいのか)がわからないという意味です!

これを見て、

メインクラスからの呼び出しかたがわかりません。(ArrayNumberのコンストラクタを呼び出したい)
呼び出し部分の内容の構成**(書き方)**がわからないので、呼び出し部分をどうかけばいいのか教えてほしいです。

と、質問を解釈しました。(太字は解釈部分)
その上での回答です。


ArrayNumberクラスはstaticメソッドしか持っていませんよね。
少なくとも現段階では、インスタンスを生成する意味はありません。

Java

1List<Integer> myList; 2// 3// myListの値を何らかの方法でセット 4// 5 6myList = ArrayNumber.sort(false, myList); 7System.out.println(myList);

大事なところが省かれているじゃないか、と思うかもしれませんが。
質問内容から逸れるので。

投稿2017/09/24 15:15

編集2017/09/24 15:33
LouiS0616

総合スコア35658

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

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

LouiS0616

2017/09/24 15:24

低評価を付けるならコメントが欲しいものです。
A-pZ

2017/09/24 16:07

確かに
study_m

2017/09/25 01:22

インスタンスは生成しなくていいのですね、ありがとうございます。 ちなみに低評価はしていません・・・何かでそう見えてしまっていたらごめんなさい。
LouiS0616

2017/09/25 01:35

いえ、回答に対する評価は誰もが付けることができるのです。 誰が付けたかは分かりませんが、追記後に取り消されたようです。
guest

0

コンソールの場合、以下のように実行することができます。

shell

1$ javac ArraySortCall.java 2$ java ArraySortCall

ただし、 ArraySortCallArrayNumberimport されていないので import 文も追加が必要です。

投稿2017/09/24 15:18

ykws

総合スコア1236

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

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

退会済みユーザー

退会済みユーザー

2017/09/24 15:21

そのまえに main メソッドの実装がおかしいのだよ・・・
ykws

2017/09/24 15:21

ですね。。
study_m

2017/09/25 01:26

コンソールの実行方法ありがとうございます。 main メソッドの引数は変更しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問