• ベストアンサー

配列について

answerの回答

  • ベストアンサー
  • answer
  • ベストアンサー率50% (3/6)
回答No.1

始めに、念のため、  Rec r = new Rex[5]; ではなくて、  Rec[] r = new Rec[5]; または  Rec r[] = new Rec[5]; ではないでしょうか。 コンパイルできているようなので、この辺は大丈夫でしょう。 ●さて、ご質問の件ですが、  Rec[] r = new Rec[5]; では、配列の準備ができているだけです。 中身のオブジェクトはないので、いきなり r[0].name = "AAAA"; という作業はできません。 ●オブジェクトが用意されていない・・・、 オブジェクトを指すポインタがありませんよ、ということで、  「java.lang.NullPointerException」 というエラーメッセージで、Javaクンが訴えている訳です。 配列内に実際にRecオブジェクトを生成してあげてください。 r[0] = new Rec(); という1行を入れると、 r[0].name = "AAAA"; r[0].tel = "123456789"; が実行できます。 ●もちろん、このままではr[1], r[2], r[3], r[4]はまだオブジェクトは用意されていないので使えません。 なので、以下のようにすると正常に配列【r】を扱うことができます。 Rec[] r = new Rec[5]; for(int i=0; i<5; i++){ r[i] = new Rec();//Recオブジェクト生成 } この後、配列r をいろいろ操作する。 ★補足 余裕ができたら、Recクラスのnameやtelへの代入は、直接  r[0].name = "AAAA"; とするのではなくて、  r[0].setName("AAAA"); のような形で値を代入できるように工夫するといいですよ。

ssi77
質問者

お礼

返答ありがとうございました。 基礎がわかっていないことがはっきりわかりました。 もっと勉強します!

関連するQ&A

  • JAVAのコンストラクタの配列について

    C言語をずっと勉強していて、最近JAVAを勉強しているものですが、卒研で以下の様なデータ構造のテストをする以下のようなプログラムを作りました。 import java.io.*; class Cell { public int statement; public String sentence; public Cell truth; public Cell fault; } class Cells { public String func_name; public int parent; public Cell cell[] = new Cell[100]; } public class architecture { public static void main(String args[]) { Cells cells = new Cells(); cells.parent = 0; cells.func_name = "main"; cells.cell[0].statement = 1; cells.cell[0].sentence = "a = b + c"; System.out.println("parent = "+cells.parent); System.out.println("func_name = "+cells.func_name); System.out.println("statement = "+cells.cell[0].statement); System.out.println("sentence = "+cells.cell[0].sentence); } } コンパイル時にはエラーはないのですが、実行するとエラーが起きます。 そのエラーメッセージがこれです。 Exception in thread "main" java.lang.NullPointerException at architecture.main(architecture.java:22) cellsのcell型の配列がうまく生成されていないようです。 どうすればよいでしょうか? ご教授ください。

  • 配列クラスのクラス名

    配列クラスのクラス名 配列クラスのクラス名を教えてください。 配列はクラスですよね。そこまでは分かります。 こんなコードを実行しましたが System.out.println((new int[0]).getClass()); System.out.println((new boolean[0]).getClass()); System.out.println((new String[0]).getClass()); System.out.println((new Integer[0]).getClass()); 親切にこのような結果を出力してくれます。 class [I class [Z class [Ljava.lang.String; class [Ljava.lang.Integer; 結果として配列が何というクラスなのかは分かりません。 (もしかして『[I』『[Z』『[L』という名前のクラスでしょうか?) 昔Javaのソースを読んだときに、配列クラスのファイルも 読んだことがあるような気がするのですが、 なんと言うクラスだったか忘れてしまいました。 パッケージ名+クラス名を教えてください。 よろしくお願いします。

    • ベストアンサー
    • Java
  • iアプリで、配列の使い方がわからず困っています。

    iアプリで、あるクラスの配列を別のクラスで利用したいのですが、その方法がよくわかりません。 たとえば、Itemクラスの配列の任意の要素を、Testクラスで使用したい場合、どのようにすればよいのでしょうか。 ========== Item.java ========== public class Item { String Item[] = new String[700]; Item(){ Item[0] = new String("item0"); Item[1] = new String("item1"); Item[2] = new String("item2");   ・   ・   ・ Item[699] = new String("item699"); } } ========== Test.java ========== public class Test extends IApplication { public void start(){ /* Itemクラスの配列'Item'を使用するための記述がわかりません。 */ Dialog _dialog=new Dialog(Dialog.DIALOG_INFO,"Item"); _dialog.setText("Item:" + Item[258]); // ← 配列'Item'の任意の要素(Item[258])を適用したい。 _dialog.show(); terminate(); } }

    • ベストアンサー
    • Java
  • GOF本のデザインパターンのCompositeパターンのJava版を実

    GOF本のデザインパターンのCompositeパターンのJava版を実際に動かしてみようと思って、ちょっと手を加えて下記のようなコードにしているのですが、Mainのcabinet.add(chassis);の所で、 CompositeEquipmentクラスの_equipment.addElement(equipment);を呼び出した所で、 何故かNullPointerException例外が発生してしまいます。Equipmentクラス変数としてchassisのオブジェクトがequipmentに渡っているはずなのですが、理由がよく分かりません。どなたか、お分かりになる方、御教示いただけたらと思います。 //ここから import java.util.Vector; import java.util.Enumeration; //Mainクラス public class Main { public static void main(String[] args) {   // TODO 自動生成されたメソッド・スタブ   Cabinet cabinet = new Cabinet("PC Cabinet"); Chassis chassis = new Chassis("PC Chassis"); cabinet.add(chassis);        //以下省略 } } // Equipmentクラス abstract class Equipment { public Equipment(String name) { _name = name; } String name() { return _name; }   //一部省略 public void add(Equipment equipment) { } public void remove(Equipment equipment) { } public Enumeration createEnumeration() { return new NullEnumeration(); } private String _name; } //CompositeEquipmentクラス class CompositeEquipment extends Equipment { public CompositeEquipment(String name) { super(name); // ... }   //一部省略 public void add(Equipment equipment) { _equipment.addElement(equipment); //System.out.println(equipment); } public void remove(Equipment equipment) { _equipment.removeElement(equipment); } public Enumeration createEnumeration() { // concrete iterator を作成する return new NullEnumeration(); } private Vector _equipment; } //Cabinetクラス ublic class Cabinet extends CompositeEquipment { public Cabinet(String name) { super(name); // ... } // ... } //Chassisクラス public class Chassis extends CompositeEquipment { public Chassis(String name) { super(name); // ... } // ... } //ここまで

    • ベストアンサー
    • Java
  • 初期値を持ったクラスの配列を使うには?

    C、C++の経験はけっこう長いのですが、javaは初心者です。 初期値を持ったクラスの配列はC++だとたとえば、 class User { char * name; int user_id; }; と宣言しておいて、 User user[] = { {"moritan2", 12345}, {"moritan3", 56789}, }; と書けますよね。これをjavaでやるにはどうすればいいのでしょうか? javaで class User { String name; int user_id; }; と宣言しておいて、 User user[] = { {"moritan2", 12345}, {"moritan3", 56789}, }; とやってもコンパイル時にエラーになってしまいます。

    • ベストアンサー
    • Java
  • オブジェクトの配列について

    Javaを勉強中の初心者です。 どなたか教えてください。 次のクラスTDobjはコンパイルできて、実行結果もでました。 public class TDobj { public static void main(String[] args) { Dog puppy = new Dog(); Dog[] myDogs = new Dog[3]; System.out.println("puppy = " + puppy); for(int i = 0; i < myDogs.length; i++) { System.out.println("myDogs[" + i + "] = " + myDogs[i]); } } } C:\MyJava>java TDobj   ・・・実行結果 puppy = Dog@1ac04e8 myDogs[0] = null myDogs[1] = null myDogs[2] = null ところが、全く同じ中身のクラスTDobj2は次のようなコンパイルエラーがでました。 C:\MyJava>javac TDobj2.java TDobj2.java:5: Dog の Dog(java.lang.String) は () に適用できません。 Dog puppy = new Dog(); ^ エラー 1 個 何故こんなことになってしまったのか教えていただきたいのですが。

  • Javaのクラス作成について。

    現在、Javaで新規クラスを作成しています。 「String型の変数を受け取ってトリミングしてString型で返す」と言うプログラムを作成したいのですが、なかなかうまくいきません。 現在、考えているのは --- Trimming.java --- public class Trimming{ String new_id; public String TrimmingId(String id){ id = new_id; String idtrim = new_id.trim(); idtrim = id; return id; } } --- Test.java --- class Test{ public static void main(String[] args) { String id = " Trimming "; Trimming ID = new Trimming(); System.out.println(ID.TrimmingId(id)); } } --- 現在、出ているエラーは Exception in thread "main" java.lang.NullPointerException at Trimming.TrimmingId(Trimming.java:6) at Test2.main(Test2.java:6) です。 よろしくお願いします。

    • ベストアンサー
    • Java
  • 配列の受け渡し

    始めまして java初心者で恐縮なのですが, プログラムA.javaで作った配列をプログラムB.javaで利用する といったことがしたく,以下のようなプログラムを作成しました. ↓がプログラムA(HTest.java) import java.lang.*; import java.io.*; import java.util.*; public class HTest{ public static class Inner{ public static String[] inp = new String[200]; inp = Input(); } public static String[] Input() { String[] abc = {"a", "b", "c", "d", "e", "f", "g"}; return abc; } } ↓がプログラムB(YTest.java) import java.util.*; public class YTest{ public static void main(String[] args){ String query = "a"; int i,j; for(i=0; i<7; i++){ if(HTest.Inner.inp[i].indexOf(query) != -1) { System.out.println("Hit!"); } } } } YTest.javaをコンパイルすると, .\HTest.java:10: <identifier>がありません。 inp = Input(); ^ .\HTest.java:10: シンボルを見つけられません。 シンボル:クラス inp 場所 : HTest.Inner のクラス inp = Input(); ^ といったエラーが出ます. 構文がどこかおかしいのでしょうか? どこがおかしいのか分かりません どなたか是非ご教授お願いいたします.

  • コンポジションについて

    public class Person{ public String name_ ; public int age_ ; public Person(){ name_ = "Asaya"; age_ = 61; } } public class Student{ public Person person_; public int grade_; public Student(){ person_.name_ = "Moto"; person_.age_ =2; grade_ = 0; } } public class SamConp1{ public static void main(String[] args){ Person person_ = new Person(); Student asaya_ = new Student(); System.out.println(asaya_.person_.name + asaya_.person_.age_+asaya_.grade__); } } 3つのプログラムを見るようにコンストラクタに引数を使わず、又継承を使わないでPerson クラスのname_ age_ それを拡張したStudetクラスのgrade_をmain関数で表したいのですが(希望としてはname_ "Moto" age_ 2 grade_ 0) 結果としては、 exception in thread "main" java.lang.nullpointerexception at student.<int>(Student.java:6) at SamConp1.main(SampConp1.java:4) となります。 まだ初心者で良く分りません。解決方法をお願いします。

    • ベストアンサー
    • Java
  • JAVA 配列

    JAVAの配列の問題で複数の人間の名前と住所を出力するクラスをつくり表示するというのがあるのですが、わかりません。教えてください。 多分以下のような感じだと思うのですが・・・。 class Chap7_2{ String[] friends,address; Chap7_2(String[] f,String[] ad){ friends=f; address=ad; } void showName(){ System.out.print("My name is"+friends+". Address is"+address+"."); } public static void main(String[]args){ String[] name={"Sayaka Kikumoto","Akiko Hayakawa","Chika Kondo"}; String[] ken={"Mie","Aichi","Ehime"}; Chap7_2 a=new Chap7_2(name[i],ken[i]); for(string i=0;i<a.length;i++); a.showName(); } } }

    • ベストアンサー
    • Java