在Java 5中读取输入的最佳实践方法

时间:2011-07-28 01:27:37

标签: java unix command-line exception-handling console

我正在为孩子们编写教程,学习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示例

您是否有更好的方法可以让孩子更有教育意义?有趣的是这些东西看起来基本如何,但是当你真正看到它时,这就是用很少的错误检查来收集一行文本的很多代码。

如果你想添加关于你最初如何对编程感兴趣的可选评论,我将非常感激。对我来说,这是偶然的机会(我的父亲必须把一个哑终端带回家在家工作,通过拨号连接到unix系统连接到他的工作主机,当他告诉我如何列出'游戏'时我被迷住了。

感谢您的帮助。

4 个答案:

答案 0 :(得分: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
    }
}

答案 1 :(得分:1)

我认为ScannerBufferedReader更容易。这就是我最初学习用户输入的方式。

你必须做一些相同的事情,但你可以不用处理异常处理,并在晚些时候尝试/捕获。

答案 2 :(得分:1)

一些修辞问题:

  • 孩子年龄多大?

  • 您在教育成果方面的目标是什么?或者这主要是为了给他们一些有趣的事情。

  • 的Java使用经验水平是什么?

我的直觉是你不应该过度使用“最佳实践”的东西。假设这些是学龄儿童,他们不需要它,他们可能没有理解它的前景。所以对于他们中的大多数人来说,这将是无聊的等等,并且是一种很好的方式来解决它。

此外,如果你自己不完全了解它,很难教授“最佳实践”。我看待它的方式,“最佳实践”是关于大多数时候最好的技术。要正确地教他们,你需要理解(并能够解释)他们工作的原因,以及何时不工作。如果您对“非最佳实践”的做法有所了解,这也有帮助......这样您就可以解释其中的差异。

(我也问你为什么要限制自己使用Java 5 ......但这并不是特别相关。)


当我询问“教育成果”时,我的意思是:

  • 学生对编程充满热情,或者
  • 学生达到如此高水平的熟练程度,或
  • ...

这是教学业务中的某个人应该问自己的第一个问题。

话虽如此,我想我会坚持上面的建议。如果你想打鼓关于“最佳实践”,请尝试构建你的材料,以便普通孩子很容易跳过“无聊”的位。

答案 3 :(得分: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);
}
}