Javaで隣接交換法を用いて配列dataを昇順に並び替え、出力するプログラムを作成する。
ただし、ループ処理には、int型の変数は使わず、以下のCounterクラスを使用する。
という課題が出て、とり組んでみたのですが所々よく分からないので、お力添えしていただければと思います。
課題には下記のような条件が書いてありました。
配列data={54,76,32,89,45,11,8,54,29,67};
[クラス]
Counter
[インスタンス変数]
int型の値を保持するcount
[コンストラクタ]
引数で渡された値を初期値としてインスタンス変数に設定する。
引数を省略された場合、ゼロを設定する。
[メソッド]
increment
値に1加算する
decrement
値に1減算する
compareTo
以下の処理を行う
Counterの保持している値が引数に指定された値と
等しい場合、値0を返す。
Counterの保持している値が引数に指定された値より
小さい場合、0より小さい値を返す。
Counterの保持している値が引数に指定された値より
大きい場合、0より大きい値を返す。
get
Counterの保持している値を添え字として、
引数で渡された配列の要素を取得します。
set
Counterの保持している値を添え字として、
第1引数で渡された配列に第2引数で渡された値を設定します。
以下組んだものです。
----
class Counter {
int count = 0;
Counter(int count) {
this.count = count;
}
Counter() {
this.count = 0;
}
public int get(int[] data) {
return this.count;
}
public void set(int[] data, int count) {
this.count = count;
}
public void increment() {
this.count = count + 1;
}
public void decrement() {
this.count = count - 1;
}
public int compareTo() {
return count;
}
}
public class Lesson09 {
public static void main(String args[]) {
Counter counter = new Counter(0);
int[] data = {54, 76, 32, 89, 45, 11, 8, 54, 67};
counter.get(data);
counter.set(data, 0);
}
}
----
とりあえず、compareToとsetとgetの部分をどう記述していいのかがよく分かりません。
よろしくお願いします。
No.3ベストアンサー
- 回答日時:
え? なんで「どれとどれを比較していいのかがよく分からなくて」なんてことが発生しうるんですか? ちゃんと比較するものは文章中に書いてありますよ.
まさか, 「これこれとそれそれを比較して」のように「比較する」と書いてないから分からないなんてことはないでしょうね.
この回答への補足
「Counterの保持している値」というのは「count」のことですよね…?
「引数に指定された値」というのはclass Lesson09 の 配列dataの事でしょうか?
No.4
- 回答日時:
隣接交換法、バブルソートのことの様ですね。
javaでは、クイックソートの簡単なメソッドがあります。
これを、参考にして見てください。
int[] data = {54, 76, 32, 89, 45, 11, 8, 54, 67};
Arrays.sort(data);
for(int i=0;i<data.length;++i){
System.out.println(data[i]);
}
System.out.println("******************");
List<Integer> list = new ArrayList<Integer>();
for(int i=0;i<data.length;++i){
list.add(data[i]);
}
Collections.reverse(list);
for(int i=0;i<list.size();++i){
System.out.println(list.get(i));
}
実行結果
8
11
32
45
54
54
67
76
89
******************
89
76
67
54
54
45
32
11
8
バブルソートについては、
以下のURLを参考にする良いですよ。
http://www.syboos.jp/java/doc/asc-desc-bubble-so …
No.2
- 回答日時:
public int compareTo() {
・・って引数がないのはどうしてでしょう?
仕様を見る限りでは、class Counter のクラス変数
int count = 0;
は、配列の添え字として使用されるようですね。
counter.get(data); は、「配列 data の、count番目を返して下さい」
counter.set(data, 0); は、「配列 data の、count番目を 0 に設定して下さい」
という処理になります。
このclass Counter 型の変数を2個使えば、ソートは出来そうですね。
このclass Counter 型の変数を1個じゃ無理かも。
この回答への補足
>public int compareTo() {
>・・って引数がないのはどうしてでしょう?
class Counter{ の中にある
public int compareTo() {
return count;
}
とは別に、作成するのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- Ruby 【JAVA】数字をひし形に出力するプログラムについて 2 2022/07/11 23:32
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- C言語・C++・C# このプログラミングの問題を教えて欲しいです。 キーボードから整数kを入力し、kが配列aの中に何個存在 2 2022/12/19 22:50
- C言語・C++・C# このプログラミングの問題を教えてほしいです。 キーボードからデータ数nとn個のデータを入力し、平均値 3 2022/12/19 22:51
- C言語・C++・C# プログラミング c言語 4 2023/03/07 01:05
- C言語・C++・C# c言語の問題です 課題1 (二分探索木とセット) 大きさ size の配列 array を考える。す 2 2023/01/10 21:08
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- C言語・C++・C# C言語 3 2022/11/09 13:27
- Java Java 配列<選挙> 4 2023/07/31 15:07
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
『args[]』とは?
-
[Ljava.lang.Stringってなんですか
-
javaについて
-
n番目に大きな値を探索する
-
この警告はどうすれば?
-
javaでEUC-JP文字列→UTF-8への変換
-
配列の中に複数存在する数がい...
-
配列について
-
配列で、値の入っている要素数...
-
配列をセッションに割り当てた後で
-
【C#】ハッシュテーブル(連想...
-
セッションを使ったint型の値の...
-
main(String[] args) の args...
-
java
-
Javaで文字と数字が混ざったも...
-
無名配列の作成方法について質問
-
多次元配列はなぜ必要???
-
2次元の配列となっているクラ...
-
JSPでデータ一覧表示
-
C++で、Excelの内容を取得する...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
[Ljava.lang.Stringってなんですか
-
この警告はどうすれば?
-
C#で動的配列Listの中身をListB...
-
javaで大容量テキストファイル...
-
C言語でunsigned char配列を連...
-
n番目に大きな値を探索する
-
JavaのBase64デコードで正しく...
-
配列で、値の入っている要素数...
-
Javaで文字を漢字であるか否か...
-
配列の中に複数存在する数がい...
-
データベースから取得したデー...
-
【C#】ハッシュテーブル(連想...
-
Javaで文字と数字が混ざったも...
-
cloneメソッドについて (java)
-
ArrayListからBean配列に値をセ...
-
配列をセッションに割り当てた後で
-
int配列をbyte配列に変換
-
セッションを使ったint型の値の...
-
javamailで複数人にメールを送...
-
【Ajax通信&Java】配列の受け取...
おすすめ情報