人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

EclipseでJavaのプログラムが稼働させようとしたらエラーが出て、エラーが出ないようにしても何も処理が実行されない袋小路から救ってください

今、このコード https://gist.github.com/AuroraNorthernQuarter/59d38331c6f4ba180f93ceadb685ac8d を、実行してみたのですが。
---------------
エラー: メイン・メソッドがクラスtestprogramm.Kajikimagurokatsuで見つかりません。次のようにメイン・メソッドを定義してください。
public static void main(String[] args)
またはJavaFXアプリケーション・クラスはjavafx.application.Applicationを拡張する必要があります
---------------
というエラーが出てきてしまいます…。
このサイト http://www.artista.co.jp/article/13145122.html では、「これで例外が発生しても止まらないクラスが出来ました。」とあるのですが…。

エラーに従って、このようなコード https://gist.github.com/AuroraNorthernQuarter/b2c178de8576d1b41b8e223973ec3f7f に直してみました。
そうすると、コンソール上では何も表示されず…どうすれば正常なプログラムとして実行できるのか、お教えいただけないでしょうか。

よろしくお願い致します。

●質問者: moon-fondu
●カテゴリ:コンピュータ 学習・教育
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● rsc
●750ポイント ベストアンサー

こちらは参考になるでしょうか。mainを書いてないです。(^_^;

 public static void main(String[] args) {
 Kajikimagurokatsu ka = new Kajikimagurokatsu();
 ka.keyboardIn();
 } 

moon-fonduさんのコメント
rscさんありがとうございます、mainメソッドが必要なんですね。 うまく動きました。https://gist.github.com/AuroraNorthernQuarter/163a96cc254cd0fd2e12e560ef519338 ただ、try?catch文の必要性がよく判らないのですが。 ----------- try?catch文はtry{}句で例外をスローする可能性のある部分を囲み、例外が発生したらcatch{}句で例外を受け取り処理し、プログラムに復帰します。 ---------- ということらしいですが、何を入力しても「〇〇が入力されました」と、出てきてしまう。 こちらのサイト http://www.artista.co.jp/article/13145122.html ではtry?catch文でどういうケースに対応しようとしているのか、度々の質問で恐縮ですが、 お教えいただけないでしょうか。 よろしくお願い致します。

rscさんのコメント
コンソール入出力では、IOException例外の可能性があるので、try?catch文を使うか、スロー宣言をしなければなりません。 try{}の中身4文だけ残して、他を削って実行してみると、エラーになります。(^_^; それから、サンプルコードですが、インデントとfinally句がおかしいので修正してみました。(^_^; >|java| package testprogramm; import java.io.*; public class Kajikimagurokatsu { public static void main(String[] args) { Kajikimagurokatsu ka = new Kajikimagurokatsu(); ka.keyboardIn(); } String keyboardIn(){ String str=""; try{ BufferedReader br = new BufferedReader (new InputStreamReader(System.in)); System.out.println("文字を入力してください。"); str = br.readLine(); System.out.println(str + " が入力されました。"); }catch(IOException e){ System.out.println("例外" + e + "が発生しました"); }finally{ return str; } } } ||<

rscさんのコメント
ハードウェアの故障とかプログラムのエラーとか想定外のエラーに対応しているのかな。 エラーの発生させ方は、こちらにあるようです。 https://oshiete.goo.ne.jp/qa/1706712.html 「str = br.readLine();」の前の行に、「System.in.close();」を書くと、いいようです。

moon-fonduさんのコメント
rscさん返信遅くなりましてすみません、ありがとうございます! 例外の場合も記載しないといけないのですね。 確かに必要なのはtry?の中だけなのですが、それを残して他以外を消すと、Eclipse上でエラー表示が出てきてしまいます。 IOException例外についての参考リンクも勉強させていただきます。 また、 finally{ } return str; } ではなく、 finally{ return str; } なのですね。確かに自分の中括弧の位置だとfinallyが機能しない?気がします。 System.in.close();も入れてみました。 実行すると、 -------------------- 文字を入力してください。 例外java.io.IOException: Stream closedが発生しました -------------------- と出てきました。 「("例外" + e + "が発生しました")」と対応して、e = java.io.IOException: Stream closed なのですね。 諸々お教えいただき、ありがとうございました。 に対応するため、例外を処理するためにtry?catch文やスロー宣言が必要ということですか…覚えておきます。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ