- 締切済み
繰り返し
継承を使ったもので、実行するプログラムを public class A22_exec2 { public static void main(String args[]){ for(int i= 0; i <= 10 ; i++){ A22_StrArray a = new A22_StrArray(); for( int j = 1; j <= 10000; j++) a.add(format.format(j)); System.out.println(a.get(5000 - 1)); public void sort(int mode){ Comparator c; public int compare(Object o1, Object o2) { return ((String)o2).compareTo((String)o1); } a.clear(); } } } } としましたが、うまくいきません。 A22_exec2.java:8: 式の開始が不正です。 public void sort(int mode){ ^ A22_exec2.java:14: ';' がありません。 } ^ A22_exec2.java:6: シンボルを解決できません。 シンボル: 変数 format 場所 : A22_exec2 の クラス a.add(format.format(j)); とエラーメッセージがでます。どこを修正すればいいでしょうか? ちなみに『項目を1000個追加し、5000番目の内容を表示。降順ソート。全てクリア。以上を10回繰り返すプログラムを作成する』という事がやりたいです。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
そもそも、Javaでは、「関数中で関数を定義する」ということが できないのでは? sakusaker7さんが指摘なさっているのもそのことです。 例えば、 class Closure { public static void main(String args []) { printline(); } private static void printline() { System.out.println("---"); } } はOKですが、 class Closure { public static void main(String args []) { private static void printline() { System.out.println("---"); } printline(); } } はコンパイルエラーです。
変数format、及びクラスA22_StrArrayが不明のため、 回答のしようがありません。 必要なソースを全て揃えて掲示してください。
- sakusaker7
- ベストアンサー率62% (800/1280)
とりあえず、 public void sort(int mode) が、for 文の真っ只中で定義されているから、それは 直すべきなんじゃないかな。と。
補足
>for 文の真っ只中で定義されているから そうですね、ただどういうふうに変えていけばいいのか見当が つかないので、どうすればいいか教えて頂けませんでしょうか?
補足
すいませんA22_StrArrayは下記の様になります。 import java.util.*; public class A22_StrArray extends A21_StrArray { int size = 0; public void add(String data) { super.add(data); size++; } public void clear() { super.clear(); size = 0; } public String[] getAll() { String[] all = new String[size]; for (int i = 0; i < size; i++) all[i] = super.get(i); return all; } public int getIndex() { return size; } public static final int ASC_SORT = 0; public static final int DESC_SORT = 1; public void sort(int mode) { Comparator c; switch (mode) { case ASC_SORT: c = new Comparator(){ public int compare(Object o1, Object o2) { return ((String)o1).compareTo((String)o2); } }; break; case DESC_SORT: c = new Comparator() { public int compare(Object o1, Object o2) { return ((String)o2).compareTo((String)o1); } }; break; default: return; } String[] a = getAll(); Arrays.sort(a, c); clear(); for (int i = 0; i < a.length; i++) add(a[i]); } }