クラスに行って、戻ってくる方法

このQ&Aのポイント
  • jukou.javaとTestMap.javaという2つのクラスのつなげ方について質問させていただきます。
  • jukou.javaはjukou.htmlからデータを取得し、テキストファイルに書き込む処理を行います。
  • TestMap.javaはjukou.javaから呼び出され、jukou.htmlから『引用』というボタンが押されたときに実行されます。
回答を見る
  • ベストアンサー

クラスに行って、戻ってくる方法

ご質問させて頂きます。 2つのクラスがあります。 (jukou.javaとTestMap.java) jukou.javaは、jukou.htmlからデータを取得して、テキストファイルに書き込むという処理をします。TestMap.javaは、jukou.htmlから『引用』というボタンが押されたときに、jukou.javaから呼び出します。それで、jukou.htmlで取得したデータと社員データファイルのデータとをTestMapでマッピングさせて、 取得したデータ(住所など)をjukou.javaでjukou.htmlに表示したいのですが・・・。 ややこしくてすいません。 2つのクラスは、独立しては動くんですがつなげると旨く動きません。 jukou.javaの方で、 //Stringの配列を宣言 String[] strings = {"C"}; //TestMap.main()の呼び出し TestMap.main(strings) ; TestMapを呼び出して、マッピングしたデータを持って(例えば住所や電話など)jukou.javaに戻ってくる方法が分かりません。 ご教授して頂けたら幸いです。

  • niiza
  • お礼率43% (211/486)
  • Java
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

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

まいど。 失礼ながら、niizaさんは、まだ概念をつかめてない段階だと思います。 Javaの教科書はお持ちだと思いますが、 他に「プログラム設計」、「オブジェクト指向」の本も見てみるとよいでしょう。 できれば、公開されているJavaプログラムを読んでみると参考になると思います。 以上はおせっかい。 二つのクラスの間で情報をやりとりしたい場合、 いくつか方法があります。 (1)メソッドの引数と返り値で受け渡す。 これが一番理解しやすいと思います。 引数でデータを渡す方法は…この場合ならString[]を 引数にしているのだから、 //注意。stringsをStringの配列として初期化する必要がある。 strings[0] = "住所"; strings[1] = "電話"; .... TestMap.main(strings); ただ、この方法では、データを戻すことができません。 データを格納するクラスを作って、引数で返すようにします。 (その場合main()メソッドでやるのはまずいので、 別の名前のメソッドを用意しましょう) XClass x; strings[0] = "..."; .... x = TestMap.method(strings); ------------ (2)送りたいデータと、返してほしいデータを オブジェクトまとめ、メソッドにはそれを渡します。 //YClassには、送るデータと返してもらうデータが入っている。 YClass y = new YClass; y.setData1("住所"); y.setData2("電話"); ... TestMap.method(y); //このあとのyには、処理されたデータが入っている。 ... = y.getData1(); ..... ------------ (3)最終的に必要になるデータをクラスにまとめ、 そのオブジェクトを作り、メソッドを起動することで 処理する。 ZClass z = new ZClass(); z.method("住所", "電話", ...); //これ以降はzには欲しいデータが入っている。 .... とにかく、処理したいデータをクラスにまとめるのが 基本です。

niiza
質問者

お礼

liar_adanさん、いつもご返事有り難うございます。 >失礼ながら、niizaさんは、まだ概念をつかめてない段階だと思います。 その通りだと思います。 liar_adanさんに、こんなに丁寧に回答して頂いているのに、今ひとつ理解できません。でも、解決はしそうです。もっと勉強しないと駄目ですね。 ご迷惑をお掛けしました。

関連するQ&A

  • クラスに行って、戻ってくる方法 その2

    http://oshiete1.goo.ne.jp/kotaeru.php3?q=592441 の方で質問させて頂いて、丁寧に答えて頂いたんですが、どうしても分からないので再度ご質問させて頂きます。 以前お答えして頂いたことから、TestMap.javaとjukou.javaを以下のように変更してみました。 jukou.java ------------- public class jukou extends HttpServlet { public jukou() { String sDate; String sName; } public void init(ServletConfig con) throws ServletException { super.init(con) ; } .... /* LOOKUP用処理 */ else if (req.getParameter("map") != null) { jukou x; x = TestMap.method(strings) ; .... TestMap.java ------------- public class TestMap { /*HashMap生成(クラス変数)*/ class MyData{ public String sDate; public String sName; } .... //呼び出し MyData myData = (MyData) hashMap.get(inputKey); jukou myData2 = new jukou(myData) ; エラー内容 C:\ja>javac jukou.java jukou.java:95: 互換性のない型 検出値 : void 期待値 : jukou x = TestMap.method(strings) ; ^ jukou.java:205: シンボルを解決できません。 シンボル: 変数 pw 場所 : jukou の クラス pw.println("<html><head>") ; ^ jukou.java:206: シンボルを解決できません。 シンボル: 変数 pw 場所 : jukou の クラス pw.println("<title>エラー</title>") ; ^ など9個 この他にも色々なパターンを試してみましたが、エラーが取れません。ご教授して頂けたら幸いです。

    • ベストアンサー
    • Java
  • パッケージ化されたクラスより変数を読む

    パッケージ宣言されたクラスから配列変数を読み出す場合、どのように記述すればいいのでしょうか。 ファイル名 Pack.java パッケージ名 package firstPack; クラス定義 public class Pack {   String [] test = {"あ","い","う","え","お"} } ↑これを、TestPack.java から test の内容を 呼び出す場合。よろしくお願いします。

    • ベストアンサー
    • Java
  • クラス宣言とアクセス制御

    お世話になります。 独学でJavaの学習を始めました。 (仕事で必要になったためです) Java のソースファイル名は、main メソッドを宣言するクラスの クラス名と一致させなければならないようですが、これは そのクラスを public をつけて宣言したときに限るのでしょうか? 以下のソースを「hello.java」という名前で保存し、コンパイルすると エラーが出ますが、「public」を削除して再びコンパイルすると、 コンパイルが通り、「test.class」が生成されます。 ********** public class test { public static void main (String args[]) { System.out.println("Hello World"); } } ********** 同一パッケージ外からクラスを参照する場合、クラス名とソースファイル名を 一致させてあげないとクラスを見つけられない、ということなのでしょうか? とんちんかんな認識でしたら申し訳ありませんが、 ご教授頂ける方、宜しくお願い致します。 また、実際に Java を使って開発されている方にお伺いしたいのですが、 現場では main メソッドを宣言するクラスのクラス名と、ソースファイルの ファイル名を一致させる、ということは常識というか、暗黙の了解みたいな ものなのでしょうか? (もちろんプロジェクト毎のコーディング規約によると思うのですが…)

    • ベストアンサー
    • Java
  • データを取得し、その度に新しい配列に格納したい

    こんばんは。 CSVファイルのデータを読み込むクラスを作っています。CSVファイルは30ほどあるので、カンマで区切ったトークンの数(StringTokenizerで区切ったトークンの数)と行数はファイルによって違います。 1つのクラスを作り、データを配列に読み込ませたいと思います。Vectorクラスを使うと出来たのですが、全部String型なので、ストリング型の2重配列に読み込ませたいです。 最初に、配列の宣言をしたのでは、配列のサイズが決まってしまうので、データ数により、配列の大きさを変えたいのですが、うまい方法が見つかりません。 誰か分かる方は、教えてください。よろしくお願いします。

    • ベストアンサー
    • Java
  • Fileクラス

    いろいろ調べてみたんですがよくわからないので教えてください。 File d = new File("."); String[] f= d.list(); のようにして”・”カレントディレクトリの ファイル名が取得できます。f[]の配列の中身がファイル名になります。 そこで、カレントディレクトリの、ある特定の拡張子のものだけ取り出せないかと、 File d = new File(".\\*.java"); (ここでは.javaのもの) としたのですが、 java.lang.NullPointerException のエラーがでてしまいます。 どのようにしたら、 *.java のような特定の拡張子のファイル取得が出来ますでしょうか。

    • ベストアンサー
    • 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
  • args[0]でエラー

    ご質問させて頂きます。 以下のコードは、javaでLOOKUPのような昨日のコードを 以前こちらでサンプルとして作成して頂いたものなんですが、 エラーの方がどうしても取れなくて困っています。 String[] value = testMap.getValue(args[0]); の行でエラーになってしまうのですが args[0]の部分を取ると、コンパイルエラーは取れますが 今度は実行エラーになってしまいます。 args[0]が鍵だと思うのですが どのようにすればいいか分かりません。 ご教授して頂けたら幸いです。 --------------------------------- import java.util.*; public class TestMap { /*HashMap生成(クラス変数)*/ private HashMap hashMap = new HashMap(); /*追加:入力キー(クラス変数)*/ private String inputKey = null; ・ ・ ・ ・ public static void main(String args[]){ TestMap testMap = new TestMap(); testMap.setMap(); /*Keyに対応する出力の判断*/ if(testMap.checkKey(args[0])){ ↓↓↓ここでエラー String[] value = testMap.getValue(args[0]); System.out.println("日付:" + value[0] + " 名前:" + value[1]); } else{ System.out.println("対応するKeyが存在しません。"); } } public TestMap() { } ・ ・ ・ ・ /*KeyからValueを返す*/ public String[] getValue(){ String[] value = (String[])hashMap.get(inputKey); return value; } }

    • ベストアンサー
    • Java
  • 配列クラスのクラス名

    配列クラスのクラス名 配列クラスのクラス名を教えてください。 配列はクラスですよね。そこまでは分かります。 こんなコードを実行しましたが 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
  • メソッド宣言内でクラス名が書かれる理由

    public static void main(String arg[]){ 上記は、メソッド宣言ですが、このメソッド宣言の中に書かれているStringは、「標準クラスの1つ」だと聞いています。(標準クラスの意味さえ僕はわかりませんが、、参考書に書かれてあるのを見てもチンプンカンプン) 何故Stringは標準クラスの1つなのに、メソッド宣言の中に書かれているんですか? 質問1:私の仮説では、メソッドがどこのクラスに属するかを明示するためにメソッド宣言内にStringが書かれていると考えてます。それでよろしいですか? 質問2:メソッド宣言とは本質的にどういうことですか?プログラミング初心者の僕でもわかるように解説お願いします。

    • ベストアンサー
    • Java
  • [クラス名].[メソッド名].[メソッド名]という書き方。

    javaを勉強している者です。 少しピンと来ない書き方があるのですがそれはタイトルの通りの書き方で、具体的には Main.getMailStore().isNewMail() という書き方です。MailというのがクラスでgetMailStore()というのがそのクラスで宣言されているメソッドで下記のように実装されています。(MailStoreというのはインターフェースとして別のファイルで宣言されています。) private static MailStore _mailStore; public static MailStore getMailStore(){ return _mailStore; } (MailStoreというインターフェースの中にisNewMailというメソッドは宣言されています。) public interface MailStore{ public boolean isNewMail(String uid); } これらだと、最初のMain.getMailStore().isNewMail()というのは、 「まず、MainクラスのgetMailStoreメソッドを呼び出して、そこでreturnされてくるMailStore型のクラスの中の、isNewMailメソッドを呼び出している」というのを一回で書いてしまっている書き方ということで合っているでしょうか?少しピンと来ないので・・(特にreturnされるメソッド(getMailStore)にそのまま.[メソッド]という書き方をのっけるあたりが) よろしくお願いします。

    • ベストアンサー
    • Java