• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:データの受け渡しについて)

データの受け渡しについて

このQ&Aのポイント
  • データの受け渡しについて理解が不足しております。主に、mainの中で読み込んだデータを外部の画面出力に送る方法がわかりません。
  • 現在、自分で組んだソースコードに問題があり、データの受け渡しを行うことができません。具体的なエラーメッセージも表示されず、解決策が見つかりません。
  • データの受け渡しに関する基本的な概念や記述方法について不明点があります。どのように記述すればデータを正しく受け渡すことができるのか、または参考になるサイトを教えていただけないでしょうか。

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

  • ベストアンサー
noname#33813
noname#33813
回答No.5

とりあえずコンパイル通って、フレームが出て、一応ファイルの内容が画面に出て、×ボタンを押したらVMが終了するようにしてみた。 クラス名とかあまりにアレなので、多少名称変えてますけど。 あくまで動くものですので、期待通りかは知りません。 (Canvasへの描画位置とか超適当ですし・・・) import java.awt.*; import java.awt.event.*; import java.io.*; class Data{ public String name; public int number; } class Disp extends Canvas{ Data _data; int _counter; Disp (Data data, int counter) { _data = data; _counter = counter; } public void paint (Graphics g){ int h,w; h = w = 100; h = h * _counter; System.out.println(h); g.drawString(_data.name,h,w); g.drawString(Integer.toString(_data.number), h + 20,w); } } class CanvasTest{ public static void main(String[] args) { Frame frm = new Frame(); frm.setSize(new Dimension(400,500)); int i; String line; String str; Data[] data = new Data[2]; for(i=0;i<2;i++){ data[i] = new Data(); data[i].number = 0; } try{ BufferedReader br = new BufferedReader(new FileReader("c:/CanvasTest.txt")); for (i = 0; i < 2 && (line = br.readLine()) != null;i++) { data[i].name = line.substring(0,4); str = line.substring(5); data[i].number = Integer.parseInt(str); } }catch(Exception e){ System.out.print("エラー:" + e); } for (i = 0; i < 2 && data[i].number != 0;i++) { Disp disp = new Disp(data[i], i); disp.setSize(100, 100); frm.add(disp); } frm.addWindowListener(new ClosingListener()); frm.setVisible(true); } } class ClosingListener extends WindowAdapter { public void windowClosing(WindowEvent e) { System.exit(0); } }

ilice
質問者

お礼

大変参考になりました プログラムの構文とか下手ですいませんm(_ _)m 画面に出力とかファイル読み込み単体なら 出来たんですけどどちらも使うとなると うまくかけませんでした 貴重な回答ありがとうございました

その他の回答 (4)

  • PED02744
  • ベストアンサー率40% (157/390)
回答No.4

ANo.1です。 いやいや、全然修正できてませんから(笑) そのまま打ち込むとエラーが続出しますよ。 これ、他人のソースをそのままコピーしてきて課題提出用に変数名だけを変えようとして失敗しているか、 そもそも、間違っているソースを提示されて「正しく動作するように修正せよ」という課題であるか、 どっちかのような感じなんですが。 importは足らないわ、 frmが途中から f になっているわ、 いきなりmainのなかに ct変数は表れるわ、 メソッドが subString だったり readlineだったりするわ、 クラスコンストラクタは存在しないわ、 JAVAのクラス定義時の約束事である先頭大文字も守られていないわ。。。 突っ込みどころ満載です。 ちゃんとコンパイルできるソースになってからの再質問希望(笑)

noname#33813
noname#33813
回答No.3

paintはいつ、どこで、誰が呼ぶのですか?

参考URL:
http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/index.html
noname#246547
noname#246547
回答No.2

>あと、この構文だと出力したウィンドウの >右上にある「×」ボタン押してもウィンドウが消えませんでした そのまえにコンパイル通らないよね?

  • PED02744
  • ベストアンサー率40% (157/390)
回答No.1

>大体こんな感じの構文です 「大体こんな感じ」・・・では、誰も回答できないです。 間違っている箇所もわからないし、そもそも、 class static main(String[] args) なんて無茶苦茶なソースを書かれて、「大体こんな感じ」といわれても困ります。 もっと簡単な例のソースを作ってみて、ここに質問してください。

ilice
質問者

補足

失礼しました 大分間違えてたみたいですね・・・(^^;) 今組んでいるプログラムです 訂正・修正等よろしくお願いします 構文> impoert java.awt.*; class date{ public String str; public int number; } class disp extends Canvas{ public void paint(date dt,int ct,Grephics g){ int h,w; h = w = 100; h = h * ct; String str; g.drawString(dt.name,h,w); g.DrawString(Integer.toString(dt.number),h+20,w); } } class 表示{ public static void main(String[] args) { Frame frm = new Frame(); frm.setSize(new Dimension(400,500)); int i; String line,str; date[] dt = new date[2]; for(i=0;i<2;i++){ dt[i] = new date(); dt[i].number = 0; } try{ BufferedReader br = new BufferedReader(new FileReader("フルパス")); for(i=0;i<2 && (line = br.readline())!=null;i++){ dt[i].name = line.subString(0,4); str = line.subString(5); dt[i].number = Integer.parseInt(str); } }catch(Exception e){ System.out.print("エラー:" + e); } for(i=0;i<2 && dt[i].number!=0;i++){ f.add(new disp(dt[i],ct)); } f.setVisible(true); } } 読み込むデータ> ****,001 ** *,002

関連するQ&A