• ベストアンサー

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

aloopの回答

  • ベストアンサー
  • aloop
  • ベストアンサー率23% (10/43)
回答No.7

再び#1です。 >//jukou myData2 = new jukou(myData); //myData2の使用目的が不明 >がないと、TestMap.javaからjukou.javaに戻れないような気がするんですが、その辺はどうなんでしょうか? ----------------------------------- jukou myData2 = new jukou(myData); ----------------------------------- このコードが実行されるとTestMap中にjukouクラスのインスタンス"myData2"が生成されることはわかりますか? TestMapからjukouに戻るのではなく、TestMapがjukou(厳密にはjukouクラスのコンストラクタ)を呼んでいるのです。 ----------------------------------- new jukou( myData ); ----------------------------------- の部分は、jukouクラスのコンストラクタにMyDataクラスを渡しています。ですので、jukouクラスには... ----------------------------------- public jukou( MyData myData ){ ... } ----------------------------------- というコンストラクタが存在しなければなりません。 あと、使用目的が不明と書いたのは"myData2"はTestMapクラスで使用していないからです。使用されていないのにインスタンスを生成する必要はありませんよね。 この説明がわからないという場合は、お手持ちのJava参考書の2章、3章辺りから読み直してください。もちろん例題を実際に書き実行してみて、どのように動いているかということも理解してくださいね。 説明が理解できた場合は、jukou.javaのソースを見せてください。

niiza
質問者

補足

aloopさん、一つ一つがとても良く理解できました。 分かっていたつもりなんですが、理解不足だったようです。以下が、jukou.javaです。(文字制限の関係で全部はコピペできませんでした) /* ここからIOServlet.java */ import java.io.* ; import java.util.* ; import javax.servlet.* ; import javax.servlet.http.* ; //import TestMap; public class jukou extends HttpServlet { jukou(TestMap(),"C") { String sDate; String sName; } public void init(ServletConfig con) throws ServletException { super.init(con) ; } public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.setContentType("text/html; charset=shift_jis") ; PrintWriter pw = res.getWriter() ; String HOUKOKUYY = req.getParameter("HOUKOKUYY") ; String HOUKOKUMM = req.getParameter("HOUKOKUMM") ; .... HOUKOKUYY = decodeString(HOUKOKUYY) ; HOUKOKUMM = decodeString(HOUKOKUMM) ; .... /* 入力ボタン用処理 */ if (req.getParameter("input") != null) { doInput(pw, HOUKOKUYY, HOUKOKUMM, HOUKOKUDD, SYOZOKUNO, SYAINNO, SHIMEI, KOUZANO, KOUZAMEI, KENSYUYY, KENSYUMM, KENSYUDD, SOUGOU, POINT1, POINT2, POINT3, POINT4, POINT5, POINT6, POINT7, POINT8, MOKUTEKI, SEIKA, KOREKARA, SAIKOU, SAITEI) ; } /* 出力ボタン用処理 */ else if (req.getParameter("output") != null) { doOutput(pw, SYAINNO) ; } /* LOOKUP用処理 */ else if (req.getParameter("map") != null) { MyData x; x = TestMap.method(strings); } pw.close() ; } /* 文字化け用処理 */ private String decodeString(String text) { try { return new String(text.getBytes("8859_1"), "JISAutoDetect") ; } catch (Exception e) { System.out.println("error!") ; return null ; } } /* 入力ボタン用処理 */ public void doInput(PrintWriter pw, String HOUKOKUYY, String HOUKOKUMM, String HOUKOKUDD, String SYOZOKUNO,String SYAINNO, String SHIMEI, String KOUZANO, String KOUZAMEI, String KENSYUYY, String KENSYUMM, String KENSYUDD, String SOUGOU,String POINT1, String POINT2, String POINT3, String POINT4, String POINT5, String POINT6, String POINT7, String POINT8,String MOKUTEKI, String SEIKA, String KOREKARA, String SAIKOU, String SAITEI) throws IOException { try { FileWriter fw = new FileWriter("C:\\ja\\" + SYAINNO + ".txt") ; fw.write(HOUKOKUYY + ",") ; fw.write(HOUKOKUMM + ",") ; .... fw.close() ; pw.println("<html><head>") ; pw.println("<title>送信</title>") ; pw.println("</head><body><center>") ; pw.println("送信しました。<br>") ; pw.println("<a href=../jukou.htm>戻る</a>") ; pw.println("</center></body></html>") ; pw.close() ; } catch (Exception e) { } finally { } } /* 出力ボタン用処理 */ public void doOutput(PrintWriter pw, String SYAINNO) throws IOException { ..... } }

関連するQ&A

  • hashMap.getについて

    たびたび、ご質問させて頂きます。 申し訳ありません。 hashMap.getについてなんですが 以下のようにhashMapを設定しました。 --------------------- public class TestMap { /*HashMap生成(クラス変数)*/ class MyData{ public String sDate; public String sName; } ・ ・ ・ Key = oStringTokenizer.nextToken(); oMyData.sDate = oStringTokenizer.nextToken(); oMyData.sName = oStringTokenizer.nextToken(); hashMap.put(Key,oMyData); ----------------- データを取り出したいので、(inputKey)=入力キー --------------- String[] value = (String[]) hashMap.get(inputKey); System.out.println("日付:" + value[1] + " 名前:" + value[2]); --------------- と、したんですが、エラーは出ないもののSystem.out.printlnの箇所でなにも表示されません。 たびたび、ご質問させて頂いて本当に申し訳ありませんが、ご教授して頂けたら幸いです。

    • ベストアンサー
    • Java
  • 自作のクラスファイルがインポート出来ない その2

    同じような質問をしてしまいまして 大変にご迷惑をお掛けしますが ご質問させて頂きます。 以前、皆さんのご協力により 大変に勉強になったんですが まだエラーが取れなくて困っています。 jukou.classとTestMap.classは同じフォルダにあります。jukou.javaからTestMap.javaを呼び出そうとすると、jukou.javaの方で以下のようなコンパイルエラーが表示されてしまいます。 -------------------- jukou.java:85: TestMap の main(java.lang.String[]) は (java.lang.String) に適用 できません。 TestMap.main(\"C\") ; ^ エラー 1 個 --- TestMap.main(\"C\") ; は、TestMap(\"C\") ;の方が正しいと思いますが、こちらでもエラーになります。 以下がコードです。 TestMap.java --- import java.util.*; public class TestMap { /*HashMap生成(クラス変数)*/ class MyData{ public String sDate; public String sName; } private static HashMap hashMap = new HashMap(); /*追加:入力キー(クラス変数)*/ public static String inputKey = null; private String[] keys = {}; public static void main(String SYAINNO[]){ try{ TestMap testMap = new TestMap(); testMap.setMap(\"test.csv\"); /*Keyに対応する出力の判断*/ if(testMap.checkKey(SYAINNO[0])){ ・ ・ ・ public String getStr(){ return \"呼ばれてますよ!\" ; } --- jukou.java -- import java.io.* ; ・ ・ ・ /* LOOKUP用処理 */ else if (req.getParameter(\"map\") != null) { TestMap.main(\"C\") ; } pw.close() ; } ご教授して頂けたら幸いです。

    • ベストアンサー
    • 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
  • 例えば、以下のようなクラスでmap変数に、あらかじめ値を入れておいて、

    例えば、以下のようなクラスでmap変数に、あらかじめ値を入れておいて、別のクラスで使うときに Common.map.get(""); と書いて、いつでも値を取り出したいのですが、static変数は、コンストラクタでいじれないようで出来ません。 このCommonクラス内であらかじめ値を入れておく方法はあるでしょうか? public class Common{ public static HashMap<String, String> map = new HashMap(); }

    • ベストアンサー
    • Java
  • javaの連想配列について教えてください

    お世話になります。 javaの連想配列について教えてください。 やりたいことは下記のようなデータを作成したいです。 ================================================ {   "shcool" : {          "class" : "A",          "yamada" : {                "class" : "AA",                "height" : 165,                "weight" : 60         },          "saitou" : {                "class" : "AB",                "height" : 170,                "weight" : 65         }   } } ================================================ 下記HPを参考してHashMap+HashMapで作成したのですがうまくいきません。 http://www.atmarkit.co.jp/fjava/javatips/081java010.html Map<String, Object> map = new HashMap<String, Object>(); map.put("school", new HashMap<String, Object>()); ((Map) map.get("school")).put("class", "A"); ((Map) map.get("school")).put("yamada", new HashMap<String, Object>()); ((Map) map.get("school")).get("yamada").put("class", "AB"); ・・・ としても下記エラーとなってしまいます。 ----------------------------------------------------- エラー: シンボルを見つけられません ((Map) map.get("school")).get("yamada").put("class", "AB");                            ^ シンボル: メソッド put(String,String) ----------------------------------------------------- 途中のschoolのvalueにHashMapを入れるところまではうまくいっているようですが、 yamadaのvalueにHashMapを入れて.put()の仕方がわかりません。。。 上記データをHashMap+HashMapで作成するにはどうしたらよいでしょうか? ぜひご教示いただけると嬉しいです。 よろしくお願いします。

    • ベストアンサー
    • Java
  • クラスに行って、戻ってくる方法

    ご質問させて頂きます。 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に戻ってくる方法が分かりません。 ご教授して頂けたら幸いです。

    • ベストアンサー
    • Java
  • 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
  • hashMap.getその2

    たびたび、ほんとすいませんが またご質問させて下さい。 先ほど、以下の通り教えて頂きまして 訂正したところエラーは出なくなりました。 MyData myData = (MyData) hashMap.get("A"); System.out.println("日付:" + myData.sDate + " 名前:" + myData.sName); データは以下の通りです。 --------------- A,2003/1/1,スイカ B,2003/2/1,バナナ C,2003/3/1,メロン D,2003/4/1,イチゴ --------------- 正しい表示は、 「日付:2003/1/1 名前:スイカ」 と、表示されなければいけませんが 「日付:2003/4/1 名前:イチゴ」 と、一番最後のレコードが表示されてしまいます。 一行追加しても、やはり一番最後のレコードが表示されてしまいます。 System.out.printlnで確認したところ、hashMapのキーはきちんとセットされているようです。 ご教授して頂けたら幸いです。

    • ベストアンサー
    • Java
  • javaのsetColor、setBackgroundについて

    プログラミング初心者で、困っています。教えてください。Javaで g.setColor(Color.red); というサンプルに良くあるコードをコンパイルしてもエラーになってしまいます。 import java.applet.Applet; import java.awt.Graphics; public class First2 extends Applet{ public void init() { setBackground(Color.yellow); } } をコンパイルすると C:\myJ\test1>javac First2.java .\Color.java:7: ')' がありません。 g.setColor(Color red); ^ First2.java:6: シンボルを見つけられません。 シンボル: 変数 yellow 場所 : Color の クラス setBackground(Color.yellow); ^ .\Color.java:6: java.awt.Graphics は abstract です。インスタンスを生成することは できません。 Graphics g = new Graphics(); ^ .\Color.java:7: シンボルを見つけられません。 シンボル: 変数 Color 場所 : Color の クラス g.setColor(Color red); ^ エラー 4 個 となってしまうんです。 ネット上のいろんなサイトでは問題なく動作するように 書かれていますが、なぜエラーになるんでしょう? どうしたら解決できますか?ご指南下さい。 ちなみにjavaのversion は 1.6 です。

    • ベストアンサー
    • Java
  • エラー発生

    SerialPortWriter.java:4: シンボルを解釈処理できません。 シンボル: クラス SerialPortHandler 位置 : io の パッケージ public class SerialPortWriter extends java.io.SerialPortHandler{ ^ SerialPortWriter.java:15: シンボルを解釈処理できません。 シンボル: 変数 port 位置 : SerialPortWriter の クラス new OutputStreamWriter(port.getOutputStream()))); ^ SerialPortWriter.java:25: シンボルを解釈処理できません。 シンボル: メソッド close () 位置 : SerialPortWriter の クラス close(); ^ エラーが消せなくて困ってます。 誰か救いの手をお願いします.