Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

java.lang.OutOfMemoryError Exception in thread "main" 

はじめまして。javaをはじめて3週間ほどです。課題についての質問なのですがよろしくお願いします。

以下の2つのクラスを作成し、実行せよ
// 文字列動的配列クラス:ABC.java
// 最下行に要素を追加
public void add(String data){}
// 指定インデックスの要素を上書き(指定インデックスが無い場合エラー)
public void set(int index, String data){}
// 指定インデックスの要素を取得(指定インデックスが無い場合エラー)
public String get(int index){}
// 全ての要素をクリア
public void clear(){}

//実行サンプルクラス: DEF.java
// 以下の処理をクラスABCを使用して実行すること。

"123" を追加
"456" を追加
"789" を追加
3個の要素を取得して表示
すべてクリア
"act001"〜"act050" の50個追加
12番目の要素を取得して表示 

についです。

public class A21_StrArray {
private String[] list = new String[1];
private int size = 0;
public void add(String data) {
String[] t = new String[list.length * 2];
System.arraycopy(list, 0, t, 0, list.length); 
list = t; 
list[size++] = data; }
public void set(int index, String data) {
if(index < 0 || index > size){
System.out.println("指定インデックスが無い");
}else{
list[index] = data;
}}
public String get(int index){
if(index < 0 || index > size){
System.out.println("指定インデックスが無い");
}
return list[index];
}
public void clear() {
for (int i = 0; i < size; i++) {
list[i] = null; }
size = 0;}


public class A21_exec {
public static void main(String[] args) { A21_StrArray list = new A21_StrArray();
list.add("aaa");
list.add("bbb");
list.add("ccc");
list.add("dd");
for(int i = 0; i < 4; i++){
System.out.println(list.get(i));}
list.clear();
java.text.DecimalFormat format = new java.text.DecimalFormat("ee000");
for(int i = 1; i <= 100; i++){
list.add(format.format(i));}
System.out.println(list.get(76-1));}
}

ここまでできたのですが、コンパイルしいざはしらせてみると
java.lang.OutOfMemoryError Exception in thread "main"
のエラーが出ます
どうすればいいか教えていただけますか
もしよかったらこうしたほうがいいところとか教えていただけると助かります

環境は
SDK1.4.1-0.5
Eclipse3.1.1
です
よろしくお願いします

3

回答

10747

閲覧

3件の回答

評価

0

>どうすればいいか教えていただけますか
そのメッセージがなんなのかを調べる。

評価

0

エラーを直せばいいよ。

評価

0

以下の行でメモリを確保しようとしたとき、ヒープ領域というところを超えてしまっているようです。

String[] t = new String[list.length * 2];

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。