• 締切済み

構造体クラスにアクセスすると止まる

class ListScheduleData{ String schedule; String place; String owner_id; public String getOwner_id() { return owner_id; } public void setOwner_id(String owner_id) { this.owner_id = owner_id; } public String getPlace() { return place; } public void setPlace(String place) { this.place = place; } public String getSchedule() { return schedule; } public void setSchedule(String schedule) { this.schedule = schedule; } } こんな感じで構造体?を宣言しておいて ListScheduleData[] lsd = new ListScheduleData[512]; インスタンス化して、ローカル変数の値を、構造体?クラスの変数に入れようとするとなぜかプログラムが停止します。 なぜでしょうか?構造体はprivate宣言してないので、直接でもセッターでも書き換えできると思うのですが。。。 したの様な感じでアクセスしてます。 System.out.println("user_id ="+user_id); System.out.println("time_buf = "+time_buf); System.out.println("schedule ="+schedule); System.out.println("place ="+place); lsd[pos].schedule = schedule; lsd[pos].owner_id = user_id; lsd[pos].place = place; lsd[pos].setSchedule(schedule); lsd[pos].setOwner_id(user_id); lsd[pos].setPlace(place); //System.out.println(lsd[pos].getSchedule()); //System.out.println(lsd[pos].getOwner_id()); //System.out.println(lsd[pos].getPlace()); 直接アクセスする場合も、セッターを使う場合も、そのコードの行で止まってしまい、次の行にいきません。 よろしくお願いします><

  • Java
  • 回答数2
  • ありがとう数0

みんなの回答

回答No.2

「止まってしまい」 ってどういうことですか? エラーや例外が発生するなら、その内容を調べましょう。 ListScheduleData[] lsd = new ListScheduleData[512]; と配列の領域を確保したあとに、上記配列の各要素にListScheduleDataのインスタンスを入れていますか? 例 lsd[0] = new ListScheduleData(); … lsd[512] = new ListScheduleData();

  • liar_adan
  • ベストアンサー率48% (730/1515)
回答No.1

もしかしたら、このようにアクセスしていませんか。 ListScheduleData[] lsd = new ListScheduleData[512]; //(A) int pos = 100;//例 lsd[pos].schedule = schedule; lsd[pos].owner_id = user_id; lsd[pos].place = place; ... (A)のところに、以下のような処理を入れなければなりません。 for(int i = 0; i < lsd.length; i++){ lsd[i] = new ListScheduleData(); } Javaのオブジェクト型で、配列が宣言されたときは、 配列の中身はまだ生成されていません。 「差し込み口が512箇所あるテーブルタップを入手した。 でもまだ電気器具が接続されていない」状態になっています。 ただ、int型やboolean型の基本型の場合は、 配列を作ればすぐ変数が使えるようになっています。 基本型とオブジェクト型でここが大きく違います。 ややこしいところだと思いますが…。

関連するQ&A

  • webアプリを作ってます。 A result was returned

    webアプリを作ってます。 A result was returned web アプリを作ってます。 A result was returned when none エラー が出て原因がわかりませんでした。 どこがおかしいのか教えてください。 package info.searchman; import java.io.*; import java.sql.*; //import java.util.*; public class KensakuBeans implements Serializable { /** * */ private static final long serialVersionUID = 1L; private String Id; private String name; private String older; private String taiju; private String shintyo; private String other; private String[] results; //Constructor public void Kensaku2Beans() { System.out.println("sitb constructor"); } public void setName(String name) { this.name = name; System.out.println("dkb setter" +name); } // Getting Methods public String getId() { return this.Id; } public String getName() { return this.name; } public String getOld() { return this.older; } public String getTaiju() { return this.taiju; } public String getShintyo() { return this.shintyo; } public String getOther() { return this.other; } public int getCountOfResults() { System.out.println("ucb10"); if (results==null) return 0; else System.out.println("ucb10 else"); return results.length; } public String getResult(int index) { System.out.println("ucb11"); return results[index]; } //execute kensaku public void kensaku() { try { System.out.println("++++" +name); System.out.println("dkb7 insert"); //JDBC Driver Class.forName("org.postgresql.Driver"); System.out.println("dkb7 kensaku2"); Connection con = DriverManager.getConnection("jdbc:postgresql:postgres","postgres","gokui"); Statement stmt = con.createStatement(); System.out.println("dkb7 kensaku3"); String table = "test"; System.out.println(table); System.out.println("dkb7 kensaku4"); System.out.println(name); System.out.println("dkb7 kensaku5"); その2に続く http://okwave.jp/qa/q5933123.html

  • 続き webアプリをつくってます。変数がなぜか渡りません。

    続き webアプリをつくってます。変数がなぜか渡りません。 見回ったのですが原因がわかりませんでした。 間違った箇所はどこですか。 package info.searchman; import java.io.*; import java.sql.*; //import java.util.*; public class ShinzinInfoTorokuBeans implements Serializable { /** * */ private static final long serialVersionUID = 1L; private String Id; private String name; private String old; private String taiju; private String shintyo; private String other; //Constructor public ShinzinInfoTorokuBeans() { System.out.println("sitb constructor"); } // Setter Methods public void setId(String Id) { this.Id = Id; } public void setName(String name) { this.name = name; } public void setOld(String old) { this.old = old; } public void setTaiju(String taiju) { this.taiju = taiju; } public void setShintyo(String shintyo) { this.shintyo = shintyo; } public void setOther(String other) { this.other = other; } // Getting Methods public String getId() { return this.Id; } public String getName() { return this.name; } public String getOld() { return this.old; } public String getTaiju() { return this.taiju; } public String getShintyo() { return this.shintyo; } public String getOther() { return this.other; } //execute insert public void insert() { try { System.out.println("++++" +Id); System.out.println("tib7 insert"); //JDBC Driver Class.forName("org.postgresql.Driver"); Connection con = DriverManager.getConnection("jdbc:postgresql:postgres","postgres","gokui"); Statement stmt = con.createStatement(); String table = "testweb"; String values = "(\'"+Id+"\', \'"+name+"\', \'" +old+"\', \'"+taiju+"\', \'"+shintyo+"\', \'"+other+"\')"; //System.out.println("Id"+"name"+"old"+"taiju"+"shintyo+other"); String insertsql = "insert into "+table+" values " + values; //sql stmt.executeUpdate(insertsql); //db close stmt.close(); con.close(); } catch (Exception ex) { System.out.println("Exception insertでエラー: " + ex.getMessage()); } } } ここまで

    • ベストアンサー
    • Java
  • クラス Lesson04はpublicであり、エラ

    いつも大変お世話になりありがとうございます。 下記コードについて質問です。 クラス Lesson04はpublicであり、ファイルLesson04.javaで宣言する必要があります というエラーメッセージが出ました。 どういう作業が必要でしょうか? ご回答のほど、宜しくお願い申し上げます。 public class Lesson04 { public static void main(String[] args) { System.out.println(10); System.out.println(10.0); System.out.println('a'); System.out.println("Java"); System.out.println(true); } }

    • ベストアンサー
    • Java
  • クラスの拡張について

    Teacher クラスを変更し、newTeacher()の時は、名前「TARO」、年齢「25」、科目「国語」で初期化し、newTeacher(名前、年齢、科目)のときはそれぞれのパラメータでオブジェクトを作るようにしたい。 Person クラスのコンストラクタが使ってもかまわない という問題で //ClassRoom3.java class Person{ String name; int age; Person(String name,int age){ this.name = name; this.age = age; } void print(){ System.out.println("[Name]"+name); System.out.println("[age]"+age); } } class Teacher extends Person{ String subject; void print(){ System.out.println("私は"+name+" といいます。"); System.out.println("年齢は"+age+" 才です。"); System.out.println(subject+" を教えています。"); } } class ClassRoom3{ public static void main(String args[]){ Teacher obj1 = new Teacher(); Teacher obj2 = new Teacher("JIRO",27,"算数"); obj1.print(); System.out.println(); obj2.print(); } } /* 実行例 >java ClassRoom3 私は TARO といいます。 年齢は 25 才です。 国語 を教えています。 私は JIRO といいます。 年齢は 27 才です。 算数 を教えています。 */ という出力結果をだしたいのですが、なんどもやっても失敗してしまい。なかなかできません。 どう直したらよいのですか?

  • 静的メンバ、ネストクラス、enumのアクセス

    下記のコードを試した所、(1)(4)は無事動作しますが、 (2)と(3)はコンパイルエラーになってしまいます。 初め、静的メンバの場合はnullでも動作する事にすごい驚いたんですが、 どこまでなら問題なく動作するかのラインがわからなくてこまっています。もしよろしければアドバイスをよろしくお願いします。 class Test{ static String A="A"; static class B{ static String val = "B"; } enum C{A,B,C} } enum D{A,B,C} class Sta{ public static void main(String[] args){ Test y=null; D y2 = null; (1)System.out.println(y.A); (2)System.out.println(y.B.val); (3)System.out.println(y.C.A); (4)System.out.println(y2.C); }}

  • 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
  • 動作説明をお願いします。

    ↓このプログラムの動作説明を詳しくお願いします。無名クラスが使われていたり大体はわかるんですが、オブジェクトの名前が同じだったりしてどこで呼び出されてどこにいくかなどがよくわかりません。ヨロシクおねがいします! public class ExAnonymous11 { String s5="String5"; class B { String s2="String2"; A x = new A() { String s3="String3"; void m(final String s4){ System.out.println(s1); System.out.println(ExAnonymous11.B.this.s2); System.out.println(s3); System.out.println(s4); System.out.println(ExAnonymous11.this.s5); } }; void m2 (C x) { System.out.println(x.s6); System.out.println(x.m()); } void m () { x.m( "String4" ); final String s7 = "String7 "; m2( new C() { public String m() { return s7; } } ); } } void m () { B x = new B(); x.m(); } public static void main(String[] args) { ExAnonymous11 x = new ExAnonymous11(); x.m(); } } class A { String s1="String1"; void m(final String s4){} } interface C { String s6="String6"; public String m(); }

    • ベストアンサー
    • Java
  • getter、setterメソッドを活用したいです

    Javaのgetter、setterメソッドをうまく使って、下記のコードを実行しようとしたのですが。 ---------------- package javatest; public class Jidosha { private int num; private double gas; public void setNum(int num) { this.num = num; } public void setGas(double gas) { this.gas = gas; } public int getNum() { return num; } public double getGas() { return gas; } public static void main(String args[]) { System.out.println("この車のナンバーは" + num + "です。"); System.out.println("この車のガソリンが入る最大量は " + gas + "です。"); } } ---------------- Eclipse上では「System.out.println・・・」のところで「非 static フィールド gas を static 参照できません」といったエラーが出てきまして。 getter、setterメソッドをうまく活用して「この車のナンバーは××××です」「この車のガソリンが入る最大量は〇〇〇〇です。」という文を出力するには、どう書けばよいでしょうか。 よろしくお願い致します。 ※OKWAVEより補足:「Webシステム開発」についての質問です。

    • ベストアンサー
    • Java
  • javaに関しての質問です (エラー)

    最近javaの勉強を始めたばかりの者です とある動画をみながら勉強をしていたのですが なぜかエラーが出てしまいます。 エラーの内容は... エラー:この文に制御が移ることはありません     if( c== 13){ エラー:return文が指定されていません この二つです、もし解決方法がわかる方がいましたらぜひ教えてくれるとうれしいです 下がソースコードになります。 public class part01 { static String name = "すけさん"; static int lv = 30; public static void main( String[] args )throws java.io.IOException { putzyosyou(); // 序章を表示 putcommnd(); if(lv<40){ putgameover(); }else{ putgamecrear(); } } public static void putzyosyou() { System.out.println("魔王が世界を滅ぼそうとしている。"); System.out.println(name + "はレベルが" + lv + "のツワモノです"); } public static void putcommnd()throws java.io.IOException { System.out.println("1.魔王を倒しに行く"); System.out.println("2.修行する"); System.out.println("3.だれかに頼る"); System.out.println("4.そんなことよりも寝よう"); int c = inputcommnd(); if( c== '1' ){ System.out.println("魔王が現れた!!"); }else if( c== '2' ){ lv += 2; System.out.println ("レベルが"+ lv + "になった!!"); putcommnd(); } } public static int inputcommnd()throws java.io.IOException { int c = System.in.read(); if( c== 10){ return( inputcommnd() ); if( c== 13){ return( inputcommnd() ); } return( c ); } } public static void putgameover() { System.out.println(name + "は負けました。"); System.out.println("GAME OVER"); } public static void putgamecrear() { String str = name + "は魔王を倒しました。"; put( str ); if(lv>120){ System.out.println("レベル" + lv + "なので魔王ゴミでした"); }else if(lv>80){ System.out.println("レベル" + lv + "なので余裕でした"); }else if(lv>50){ System.out.println("レベル" + lv + "なので倒せました"); }else{ System.out.println("レベル" + lv + "なので苦戦しました"); } System.out.println("GAME CREAR"); } static void put( String str ) { System.out.println( str ); } }

    • ベストアンサー
    • Java
  • 得点を表示するクラス

    class Tokuten { private int id; private String name; private int eng; private int math; private int sci; Tokuten(int i,String nm,int e,int m,int k) { id=i;name=nm;eng=e;math=m;sci=k; } void show() { System.out.println("("+id+","+name+","+ eng+","+ math+","+ sci+")"); } } public void push(Tokuten tokuten) { if(sp!=tokutens.length) { tokuten.show(); System.out.println("push"); students[sp++]=student; } else { System.out.println("Stack is full"); } } class Sample { public static void main(String[] args) { Stack ss=new Stack(0); ss.push(new Tokuten(1,"Jiko",72,80,68)); (Tokuten)(ss.pop()).show(); } 下記のような得点の表を表示したいのですがうまくいきません set Dataという得点を受け取って各フィールドに格納するやり方が分からないのでエラーばかり出るのだと思います、どなたかソースなどお教えくださると助かります

    • ベストアンサー
    • Java