重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

下のプログラミングについていくつか質問があります。
(1)
プログラムの冒頭に来るpublic static void main(String[] args)を今まで気にしていなかったのですが
これはどういうことですか?これもメソッドのひとつなんですか?このプログラムではpublic static void main(String[] args)でメソッドを定義してそれをetest( )メソッドで開いているという感じでしょうか?
それとetstってどこから来たのかわかります?作者が勝手につけた名前だそうですが。

(2)FileReader fr = new FileReader("xfile.txt"); のところがわかりません。これはどういう意味ですか?

public static void main(String[] args) {
public static void etst( ) {
try { // try節を書く
FileReader fr = new FileReader("xfile.txt");
}
catch (FileNotFoundException e) { // FileReader( )対応catch節
System.out.println("例外1: " + e); // 例外情報を表示
return; // 戻る
}
catch (IOException e) { // Close( )対応catch節
System.out.println("例外2: " + e); // 例外情報を表示
return; // 戻る
}
System.out.println("ファイルは正しくオープンされました");
}
}
}

よろしくお願いします!!

A 回答 (6件)

追加の質問を頂いていたのですね。



> 「mainからetestなどのメソッドを呼び出し、メソッドはmainの外で定義するというのが正しいです。」と
> ありますがこれはどういうことなのでしょうか?mainからetestなどのメソッドを呼び出すということは
> mainにetestのメソッドが入っているということですか?

質問者さんの用語法が一般的なJavaプログラマの用語法と違うようなので、ご質問の正確な意味をつかみずらい
のですが、多分逆だろうと思います。質問文中のプログラムではmainの後の{}の「中に」etstが記述されて
いますよね。("{}"で囲まれた一まとまりをブロックと言います。)Javaではこういう書き方はしないのです。
No.1の回答に書いたように、mainのブロックとetestのブロックとは独立しています。処理の内容としては、
mainの処理の一部分としてetestの処理を行うことになります。

> インスタンスってなんでしょうか?

これもJava(というかオブジェクト指向)の基本中の基本なのですが、クラス(型)を実体化したものが
インスタンスです。クラスが設計図、インスタンスは設計図を基に作られた製品と思ったらよいです。
ご質問のケースでは、一般的にファイルを読む道具としてFileReaderクラスが定義されていて、
それを基に、"xfile.txt"というファイルを読む具体的なFileReaderを作成しています。
    • good
    • 0
この回答へのお礼

お返事ありがとうございました。

>質問者さんの用語法が一般的なJavaプログラマの用語法>と違うようなので、ご質問の正確な意味をつかみずらい

すみません、よく理解しないで自分勝手に使ってました・・・。混同させてしまってすみません。

回答の方は大変わかりやすく理解しやすかったです。
ありがとうございました。

お礼日時:2003/11/25 22:38

> 「mainからetestなどのメソッドを呼び出し、メソッドはmainの外で定義するというのが正しいです。

」と
> ありますがこれはどういうことなのでしょうか?mainからetestなどのメソッドを呼び出すということは
> mainにetestのメソッドが入っているということですか?

メソッドの呼び出しとメソッドの定義がごちゃごちゃになっていますね。

public void xxx(){
}
とか書いてあるのはメソッドの定義です。

あるメソッドの中でxxx()とか書いてあるのは
メソッドの呼び出しです。

あるメソッドの中で他のメソッドを定義することはできません。
    • good
    • 0
この回答へのお礼

なるほどそういうことだったのですね!!
もう混乱しまくっててJAVAを諦めようかと思っていたほどでした・・・。すいませんわかってみればなるほどですね。

お礼日時:2003/11/25 22:40

#2です。




省略と記述したのは、etstメソッドの処理内容です。
つまり、

-------------------------
try { // try節を書く
FileReader fr = new FileReader("xfile.txt");
}
catch (FileNotFoundException e) { // FileReader( )対応catch節
System.out.println("例外1: " + e); // 例外情報を表示
return; // 戻る
-------------------------
の部分です。
    • good
    • 0
この回答へのお礼

すいませんなんどもありがとうございました。
失礼します。

お礼日時:2003/11/25 22:29

・上記のソースではコンパイルエラー出ます。


・質問の内容とタイトルが一致しません。この質問は例外処理の質問ではありません。

(1)C言語でいうところのmain関数です。あなたが他にどんな言語を知っているかわからないのでとりあえずC言語で例えてみました。

(2)"xfile.txt"をコンストラクタの引数にしてFileReaderのインスタンスを生成し、frに格納しています。ファイルを開く操作、と言った方がわかりやすいでしょうか。


<蛇足>
 質問内容からは、まったくJavaに触ったことの無い人なのかな、という印象を受けました。上記のソースはそのままではコンパイルエラーが出るのでそれでは勉強になりません。本屋さんで別のJava入門書を買うことをお勧めします。その際、間違ってJavaScriptの入門書を買わないよう注意してください。本屋さんによってはJavaの本とJavaScriptの本が混ざって売っているところがあるので。
 今後のアドバイスとして。どうしたら動くかではなくどうしたら動かなくなるのかを知ってほしいところです。
    • good
    • 0
この回答へのお礼

すいませんおっしゃるとおり例外処理の質問ではないですね・・・。前の質問と混同してしまいました。

わかりやすい回答をありがとうございます。
えぇおっしゃるとおりJAVAにさわったことはありません。まだ本だけで勉強している状態で知識が絶対的に不足しているのを実感している次第でございます。いちおう今もっているのがJAVA入門書用の本なのでこれで勉強していこうと思います。

お礼が送れて申し訳ありません。
ありがとうございました。

お礼日時:2003/11/25 22:27

まず、いくつか間違いがあるようですので、訂正をしておきます。



1.プログラムの冒頭に、public static void main(String[] args)がくることはありません。

2.public static void main(String[] args)の記述が違います。

正しくは、
---------------------------

public class ExceptionTest
{
 public static void main(String[] args){
  etst();
 }

 public static void etst(){
  省略
 }
}

という形になります。
(ExceptionTestというのは、私が勝手に付けた名前です)

---------------------------

>これもメソッドのひとつなんですか?

そうです。基本的には、メソッド名は自由に命名できますが、
このメソッドだけはJAVAの言語仕様で決められていて、
実行の開始場所を意味しています。


>それとetstってどこから来たのかわかります?作者が勝手につけた名前だそうですが。

その通りです。メソッドには名前を付けなければなりません。
単にaとかbでも構わないのですが、作者は少し意味のある名前を
付けたかったのだと思います。
    • good
    • 0
この回答へのお礼

お返事どうもありがとうございました。
すいません、

public static void etst(){
  省略

のところなんですが省略というのはpublic static voidというのを省略しているということでしょうか?

お礼日時:2003/11/20 01:56

前回の追加質問ですね。



(1)
まず、mainですが、Javaのプログラムは、一般的にJava Virtual Machine という
特別なプログラム上で動きます。main は、そこから呼び出される特別なメソッドです。
「メソッドのひとつ」というのは合っています。

> このプログラムではpublic static void main(String[] args)でメソッドを定義して
> それをetest( )メソッドで開いているという感じでしょうか?

ということですが、実はJavaではこんなプログラムの書き方はしません。このままでは
コンパイルエラーになります。mainからetestなどのメソッドを呼び出し、メソッドは
mainの外で定義するというのが正しいです。

public void main(String[] args) {
 etest(); // これはメソッドの呼び出し
}
// 下はメソッドの定義
void etest() {
 // etest() の処理をここに書く
}

(2)
"xfile.txt"というファイルを読むFileReaderのインスタンスを一つ作成すると
いうことです。
    • good
    • 0
この回答へのお礼

こんにちはranxさん。その節はどうもありがとうございました。
(1)に関してなのですが、「mainからetestなどのメソッドを呼び出し、メソッドはmainの外で定義するというのが正しいです。」とありますがこれはどういうことなのでしょうか?mainからetestなどのメソッドを呼び出すということはmainにetestのメソッドが入っているということですか?

あと(2)で出てくるインスタンスってなんでしょうか?

お礼日時:2003/11/20 01:52

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!