Лучший способ чтения ввода в Java 5 - PullRequest
3 голосов
/ 28 июля 2011

Я пишу учебник для детей, чтобы научиться программировать на платформе 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 ]

10 голосов
/ 28 июля 2011

Сканер довольно простой и менее кодовый.

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 голос
/ 28 июля 2011

Моя идея заключается в том, что дети будут более возбуждены, когда увидят свой результат на новом экране с помощью 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);
}
}
1 голос
/ 28 июля 2011

Некоторые риторические вопросы:

  • Какого возраста дети?

  • Чего вы хотите достичь с точки зрения результатов обучения?Или это в основном дает им что-то забавное.

  • Каков ваш уровень опыта работы с Java?

У меня есть ощущение, что вы не должны выходить за рамки «лучших практик».Предполагая, что это дети школьного возраста, им это не нужно, у них, вероятно, нет перспективы понять это.Так что для большинства из них это будет скучно, бла-бла, и это хороший способ отключить их.

Кроме того, трудно научить «лучшей практике», если вы сами не до конца понимаете это.,На мой взгляд, «лучшая практика» - это методы, которые являются лучшими в большинстве случаев.Чтобы правильно их научить, нужно понимать (и уметь объяснять), почему они работают, а когда они не работают.Также полезно, если вы немного разбираетесь в «не лучших практиках» способов ведения дел ... чтобы вы могли объяснить разницу.

(я также хотел бы спросить, почему вы ограничиваете себя Java5 ... но это не особенно актуально.)


Когда я спросил о «результатах обучения», я имел в виду такие вещи, как:

  • студент получает / остается в восторге от программированияили
  • ученик достигает того или иного уровня мастерства, или
  • ...

Это один из первых вопросов, который кто-то в бизнесеучение должно спрашивать себя.

Сказав это, я думаю, что буду придерживаться моего совета выше.Если вы хотите побить барабан о «лучшей практике», постарайтесь структурировать свой материал так, чтобы обычному ребенку было легко пропустить «скучные» биты.

1 голос
/ 28 июля 2011

Я думаю, что Scanner немного проще, чем BufferedReader, лично.Именно так я и начал изучать пользовательский ввод.

Вы должны сделать то же самое, но вы можете оставить обработку исключений и попробовать / перехватить на более поздний день.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...