2011-07-28 12 views
3

私は子供向けのチュートリアルを作成していて、Java 5プラットフォームでのプログラミングを学んでいます。Java 5の入力を読み取るベストプラクティス方法

コンソールプログラムからテキストデータを読み込む最も良い方法は何ですか?

"最高"とは、これがJava 5レベルで行われる最も一般的な方法を意味します。コマンドラインからのテキスト入力の読み込みには挑戦が伴い、十分に守られた方法ではいくつかのレベルの例外を組み込む必要があります。このチュートリアルのこの時点では、Javaの基本的な出力、基本的なプログラム構造、例外処理について説明しました。ユーザーの入力の前に追加の事項をカバーする必要があると思えば、私は提案を歓迎します。

この質問でウェブ検索を実行しても即座に回答が得られないということは面白いことですが、徹底的に取り除くとベストプラクティスの意味はありません。私はそれは非常に多くの隠された警告があるので、最初のように簡単ではないと思う。

import java.io.InputStreamReader; 
import java.io.BufferedReader; 
import java.io.IOException; 

class Example { 

    private BufferedReader br; 
    private String inputString; 

    public static void main(String[] args) { 

     String inputString = null; 

     BufferedReader br = 
      new BufferedReader(new InputStreamReader(System.in)); 

     System.out.print("\n > "); 

     try { 

      inputString = br.readLine(); 

     } catch (IOException ioe) { 

      System.out.println("\n IOException called."); 
     } 

     System.out.println("\n Input was: " + inputString); 
    } 
} 

あなたは使用して、これをコンパイルします:それは使用してjavacのExample.java

ファイル名を指定して実行します。java例を

あなたはそれについて考えることができる良い方法は、子供のための、より有益であるかもしれないありますか?面白いように、これらのことはそうだと思われますが、実際に見ると、最小限のエラーチェックで1行のテキストを収集するためのコードがたくさんあります。

最初にプログラミングに興味を持ったことについてのオプションのコメントを追加したい場合、私は大変感謝しています。私にとっては、それはチャンスでした(私の父は家に仕事をするために家にダムターミナルを持っていなければならず、UNIXシステムへのダイヤルアップ接続で自分の仕事のメインフレームに接続しなければなりませんでした。フックされた)。

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

+0

対象が既存の知識のない子供の場合は、定型記号をすべて使用しない言語のいずれかを選択してください。 Pythonでは、あなたは(あなたが明らかなものについて心配する必要はありますが、子供たちのために、おそらく十分です「それが実行さ」だけでなく、生産コードのための)クラス、例外やその他もろもろを心配することなく、3つのライナーでこのすべてを置き換えることができ – Voo

+0

Iだろう、そのベストプラクティスは、Javaのサポートされているバージョンを使用するように言うのいずれかのJava 6のアップデート26またはJava 7 –

答えて

10

スキャナはかなり基本的でコードが少ないです。

import java.util.Scanner; 

class Example{ 
    public static void main(String args[]){ 
     Scanner s = new Scanner(System.in); 
     String inputString = s.nextLine(); 
     //Output stuff 
    } 
} 
+0

それは本当に役に立ちます。この時点で、ユーザー入力の詳細から離れる方がよいと思いますか?それが私が目指していた場所でした。もしScannerがこれを許せば、それが最良かもしれません。私はちょうどそれがどのように有益なことを使うのか分かりません。 BufferedReaderを使用する場合は、try/catchブロックで読み込みを囲む必要があります。これは、少なくとも、テキストによるユーザー入力の解析に伴う複雑さをヒントにします。 – dvanaria

+0

try-catchブロックに関する初心者を必ず教えてもらえるかどうか分かりません。彼らは、コントロールフローをそのまま理解するのに十分な問題があるでしょう。 Scannerは私が初心者として教えていたもので、Scannerをファイルに使用するまでtry-catchをカバーしませんでした。本当に必要ならば、スキャナが 'nextInt()'を使ってintを読み込んでtry-catchの中に置くことができます。なぜなら、それらが非intを入力するとInputMismatchExceptionが発生する可能性があるからです。 – Jodaka

1

Scannerは、BufferedReaderよりもやや簡単だと思います。それが私が最初にユーザー入力を学んだ方法です。

同じことをする必要がありますが、例外処理を中止して、後で試してみることもできます。

+0

おかげで - どのようにあなたがしてスキャナで例外を処理できますか?ユーザーが読み取りメソッドで処理できないものを入力した場合はどうなりますか?実際には、ポイントまで、ユーザーが入力する可能性のある入力の種類は、Scannerで例外がスローされる可能性があります。素晴らしいエントリー、ありがとう、私は人々の個人的な経験に彼らが与える答えで多くの重さを置いた。 – dvanaria

+0

@dvanaria nextXXXを使う前にhasNextXXXでチェックすることができます。または、それに応じた例外を捕まえることができます(これは 'InputMismatchException'または' NoSuchElementException'となります)。個人的には、プロトコルを読むときや、 1つの特異なエラーの場合があります。 – Voo

1

いくつかの反語:

  • 子供は何歳?

  • 教育成果に関して達成しようとしていることは何ですか?それとも、これは主に何か楽しいことを与えることです。

  • Javaの経験は?

「ベストプラクティス」で船に乗ってはいけないと感じています。これらが就学年齢の子供であると仮定すると、彼らはそれを必要とせず、おそらくそれを理解する見通しがありません。だから、彼らの大半は退屈なものになるだろうし、それをITから外す良い方法だ。

ほかに、あなたが完全にそれを自分で理解していない場合は、「ベストプラクティス」を教えることは困難です。私がそれを見ているところでは、 "ベストプラクティス"はほとんどの場合最も良いテクニックです。それらを適切に教えるためには、なぜ彼らが働くのか、また働かないのかを理解する必要があります(説明することができます)。また、「ベストプラクティス」のやり方について少し理解していれば、その違いを説明できるようになります。

(。あなたは、Java 5に自分自身を制限している理由は、私も疑問だろう...しかし、それは特に関係ありません)


私は「教育の成果」について尋ねたところ、私のような平均値の事だった。

  • 学生が取得/プログラミングについて熱狂的なまま、または
  • 学生は、このような実現や能力のようなレベル、または
  • ...

それは、教育の事業の誰かが自分自身に尋ねるべきであることを最初の質問の一つです。

は私が上記の私のアドバイスに固執すると思う、と述べました。あなたが "ベストプラクティス"についてドラムを叩きたいのであれば、平均的な子供が "退屈な"ビットをスキップするようにあなたのマテリアルを構造化してみてください。

+0

おい、すごい質問。私は9歳から13歳の子供たちを目指しています。それはプログラミングに興味がある時です。教育成果については、実際にはチュートリアル全体のポイントです。私は、オタクやコンピュータのオタクというラベルを付けられていない子供たちから興味を引くことを望んでいる。私のJavaでの経験は、趣味レベルで約5年間のプログラミングです。私の学士号は主にJavaをベースにしていましたが、それは最高でも1年間の経験に過ぎません。質問ありがとう。 – dvanaria

+0

また、Java 5の制限の理由はありません。それは私のチュートリアルを構築しているプラ​​ットフォームです。私は様々なリリースの詳細から離れようとしています。実稼働環境では、最近Java 5が最も広く使われています。私はJava 6の多くの機能が好きです。これは、開始時に決めなければならない決定でした。 – dvanaria

1

私の考えでは、彼らはのJOptionPaneを使用して新しい画面で自分の結果を見ると、子供たちはより退出しようとしているということです。

import javax.swing.JOptionPane; 
public class test{ 
public static void main(String[] args){ 
String name=JOptionPane.showInputDialog(null,"Enter your name"); 
JOptionPane.showMessageDialog(null, "Your Name: " + name); 
} 
} 
関連する問題