アプリ版:「スタンプのみでお礼する」機能のリリースについて

継承を使ったもので、実行するプログラムを
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回繰り返すプログラムを作成する』という事がやりたいです。

A 回答 (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();
}
}
はコンパイルエラーです。
    • good
    • 0

変数format、及びクラスA22_StrArrayが不明のため、


回答のしようがありません。
必要なソースを全て揃えて掲示してください。

この回答への補足

すいません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]);
}
}

補足日時:2007/08/16 09:35
    • good
    • 0

とりあえず、


public void sort(int mode)
が、for 文の真っ只中で定義されているから、それは
直すべきなんじゃないかな。と。

この回答への補足

>for 文の真っ只中で定義されているから
そうですね、ただどういうふうに変えていけばいいのか見当が
つかないので、どうすればいいか教えて頂けませんでしょうか?

補足日時:2007/08/16 09:38
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!