
No.2ベストアンサー
- 回答日時:
実装としては非常に単純です。
import java.util.Arrays;
import java.util.Comparator;
public class Sort {
static class ArrayElement{
int viIndex;
String vsData;
ArrayElement(int viI, String vsD){
viIndex = viI;
vsData = vsD;
}
}
public static void main(String [] args) {
String[] array0 = {"x", "a", "b", "3", "1"};
ArrayElement[] array1 = new ArrayElement[array0.length];
ArrayElement ae = new ArrayElement(0, "");
for( int i = 0; i<array0.length; i++){
array1[i] = new ArrayElement(i+1, array0[i]);
System.out.println(
array1[i].viIndex+"; "+
array1[i].vsData+"; "+
"");
}
System.out.println();
// sortをカスタマイズする。
Arrays.sort(array1, new Comparator<ArrayElement>() {
@Override
public int compare(ArrayElement ae0, ArrayElement ae1) {
return ae0.vsData.compareTo(ae1.vsData);
}
});
for( int i = 0; i<array0.length; i++){
System.out.println(
array1[i].viIndex+"; "+
array1[i].vsData+"; "+
"");
}
}
}
ありがとうございます。
GUIにしてテキストに表示しようと思ったのですが、このプログラムからは難しいですか?
これまではそんなに苦も無く出来たのですが、いくらやっても表示が出来ません・・・
よろしくお願いします
No.3
- 回答日時:
(元の並び順、値)という形でデータを保持するクラスを作り、
(1,3),(2,1),(3,8)
という配列を作って
値でクラスのインスタンスをソートする。
ソートの比較にはComparatorインターフェースを使う。
初心者に難しいのはComparatorインターフェースの実装に
無名の内部クラス使うところですかね。
最初はComparatorインターフェースを普通のクラスとして実装して
普通にインスタンス化しても良いです。
キーボードからテキストに入力した数字を。番号もソートも個別にGUIに表示しようとしているのですが、なかなか頭が回りません・・・
簡単そうで難しいですね。
No.1
- 回答日時:
Arrays.sort + Comparatorを使う
String[] array = {"x", "a", "b", "3", "1"};
Arrays.sort(array, new Comparator<String>() {
@Override
public int compare(String obj0, String obj1) {
return obj0.compareTo(obj1);
}
});
for (String string : array) {
System.out.println(string);
ソートはプログラムを製作してうえで避けては通れない分野なので完全に理解してください。
上記の方法ですとソートの動きを理解できず、配列、変数、判定のやり方など曖昧のまま進んでしまい多と後大変苦労するとおもいます。 プログラムの基本があまり理解できない人にはおすすめできません。
基本的なやり方を理解した方が、後々色々の箇所で役に立ちます。ここはじっくりと腰を落ち着いてチャートなど紙の上での分析を書いて理解して解析してください。
あまり根を詰めづに休憩を取りながら頑張ってみてください。
int a[] = {66,12,10,43,45,52,73,65,2,39,97,76,83,11,57,63};
// aの内容を表示
for (int i = 0; i < a.length; i++) {
System.out.print(a[i] + " ");
}
System.out.println();
// 先頭から順に隣接する逆順要素を交換する
for (int i = 1; i < a.length; i++) {
if (a[i-1] > a[i]) {
// a[i]とa[i-1]を交換
int w = a[i];
a[i] = a[i-1];
a[i-1] = w;
}
}
// aの内容を表示
for (int i = 0; i < a.length; i++) {
System.out.print(a[i] + " ");
}
System.out.println();
なんとなく分かってきたけど、やっぱ難しいですね・・・
要するに、ソートさせるときも順番に比較していくわけだから、ソートの順番が決まったところで、そのソートされた数字には、カウントされた数が番号として付く・・・ってことですね?
ソートの仕組みを理解してるようでしてなさそうだから、もう一度見直します。
これからよく考えてみます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ループ処理の際、最後だけ","を...
-
続・ZZZ,ZZZ,ZZ9形式の金額形式...
-
論理演算子”||”またはの入力方法
-
テキストボックスに入力された...
-
Java 配列<選挙>
-
コマンドライン引数の例外処理...
-
コマンドプロンプトでキーを押...
-
数値⇒漢数字変換 java
-
countに実行した回数をいれたい...
-
オブジェクトの中のプロパティ...
-
ORA-01858: 数値を指定する箇所...
-
System.err. printlnとSystem.o...
-
IF関数でEmpty値を設定する方法。
-
C言語のポインターに関する警告
-
動的配列が存在(要素が有る)か...
-
C言語 重複しない4ケタの乱数...
-
JSPでの計算結果表示
-
1~100までの数字を表示したい
-
hiddenの値が期待した値で取得...
-
JSPやサーブレットでSystem.out...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ループ処理の際、最後だけ","を...
-
java キーボード入力された値の...
-
論理演算子”||”またはの入力方法
-
数値⇒漢数字変換 java
-
テキストボックスに入力された...
-
続・ZZZ,ZZZ,ZZ9形式の金額形式...
-
Ctrl+Zが入力されると終了する...
-
JAVAのfor文で困っています。
-
countに実行した回数をいれたい...
-
Java 入力した整数値の合計を、...
-
配列を逆順させて表示させる方...
-
Randomメソッドの確率設定
-
【JAVA <identifier>がありま...
-
コマンドライン引数の例外処理...
-
繰り返しによる星印の出力
-
Java 配列<選挙>
-
7つ数字を表示したら改行すると...
-
要素数が10の配列で、乱数0~9...
-
javaのプログラミングについて...
-
javaです。 途中まで出来ている...
おすすめ情報