- ベストアンサー
テキストfileの入力、変換、出力
javaを始めたばかりのものです。 機能概略: (1)テキストfile "in.c"をbuf[]に読み込む (2)buf[]の内容を変換する。 (3)テキストfile "out.c"にbuf[]の内容を書き出す 問題点: ・コンパイルは、OK。 ・実行時、下記 エラ-メッセ-ジがでてしまいます。 Exception in thread "main" java.lang.NoSuchMethodError: main ・ポインタ-が無いので、値渡しで渡して、値をかきかえることは無理? 以下 ソ-ス _002.JAVA import java.io.*; class ChangeData { //コンストラクタ ChangeData() { } /*++ 指定されたファイル名を読み込み*/ void SetInputData(String inputFile, byte bBuf[], int iInCntMax) { //ファイルの読み込み処理を記述 //iInCntMaxに読み込みサイズを設定 } /*++ データの変換処理 */ //ファイルの変換処理を記述 //この処理はまだ未記述 /*++ 指定されたファイルへ書き込み*/ void PutOutputData(String inputFile, byte bBuf[], int iInCntMax) { //ファイルの書き込み処理を記述 //iInCntMaxサイズ分 //iInCntMaxに読み込みサイズを設定 } }/*end クラス*/ /* メインルーチン----------------------------*/ class _002 { public static void main() { int iInCntMax,iOutCntMax;/*入力/出力buf長*/ ChangeData data = new ChangeData(); byte bBuf[] = new byte[0x100]; iInCntMax=iOutCntMax=0; data.SetInputData("in.c",bBuf,iInCntMax); data.PutOutputData("out.c",bBuf,iOutCntMax); } }
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
もう一つ質問があったのですね。 ・ポインタ-が無いので、値渡しで渡して、値をかきかえることは無理? という件ですが、一般論としてはa-kumaさんの回答の通りです。 が、ご質問のソースの中にある //iInCntMaxに読み込みサイズを設定 というのは、無理です。 とりあえず、この場合は、関数の戻り値の型をintにしてそこへ返してしまう のが手っ取り早い解決法ですが、本当はもう少しオブジェクト指向の基本的な 考え方を勉強して欲しいところです。 (ヒントだけ言うと、ChangeDataというのは名前からして手続き指向です。 「読み込まれたデータ」を表すクラスが一つあれば足りるケースだと思います。)
その他の回答 (3)
- ranx
- ベストアンサー率24% (357/1463)
あ、そうか。 Java の main メソッドは、引数なしはありません。常に public static void main( String[] args ) です。
- ranx
- ベストアンサー率24% (357/1463)
ChangeData クラスのメソッドにpublic指定が無いので、 他クラスのメソッドであるmain()から見えないのだと思います。 void SetInputData( → public void SetInputData( void PutOutputData( → public void PutOutputData( としたら良いのでは。
- a-kuma
- ベストアンサー率50% (1122/2211)
試していないのですが、 > ・実行時、下記 エラ-メッセ-ジがでてしまいます。 > Exception in thread "main" java.lang.NoSuchMethodError: main エラーメッセージ通りで、class _002 のメソッド main() で、存在しない メソッドを呼ぼうとしています。多分 ChangeData クラスのメソッドだと 思います。メソッド名と、その引数の方を再確認しましょう。 > ・ポインタ-が無いので、値渡しで渡して、値をかきかえることは無理? Java はポインターと呼んでいないだけで、ほとんどが「参照」ですから、 心配するに及びません。
補足
publicに変更してためしましたが、 やはり Exception in thread "main" java.lang.NoSuchMethodError: main のメッセ-ジがでてしまいます。