Среда, 13 Ноября 2024, 12:16

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Работа с консолью (BufferedReader)
ComentДата: Суббота, 09 Июня 2012, 19:07 | Сообщение # 1
почетный гость
Сейчас нет на сайте
Здравствуйте, возникла небольшая проблема при вводе с клавиатуры в консольное окно данных. Вот код :

Code
  import java.io.*;    

public class MyProg {    

       public static void main(String[] args){    

             InputStreamReader is = new InputStreamReader(System.in);    

             BufferedReader bistream = new BufferedReader(is);    

                 try {

                         char c;    
                         String e=null;
                         int number;
                 
                     while(e!="e"){
                          System.out.println("введите имя и нажмите <ввод>:");    

                          String nameStr = bistream.readLine();    

                          System.out.println(nameStr + " введите число:");

                          String numberStr = bistream.readLine();

                          number = Integer.valueOf(numberStr).intValue();

                          System.out.println(nameStr + "  вы ввели число " + number);

                          System.out.println(nameStr + "  введите символ:");

                          c = (char)bistream.read();

                          System.out.println(nameStr + "  вы ввели символ  " + c);

//Вывод в файл     

                          PrintStream ps = new PrintStream(    

                          new FileOutputStream ("res.txt"));     

                          ps.println("привет " + nameStr + c + number);    

                          ps.close();
                       }
                    } catch (IOException e){

                           System.out.println("ошибка ввода " + e);    

       }    

    }

}


Дело в том, что при повторном вводе данных программа работает криво. То бишь для корректной роботы цикла, нужно вводить больше одного символа (char), иначе "имя" (nameStr) будет пустым и сразу выводит предложение ввести число.
Уважаемые Java-программисты, просьба скомпилировать и запустить программу может какие идеи появятся cool Буду рад любой помощи.

Хм,а вот если блок с вводом символа заменить на блок с вводом числа, цикл работает нормально dry

Code
System.out.println("введите номер  ");   
   String numberStr1 = bistream.readLine();   

   n = Integer.valueOf(numberStr1).intValue();   
   System.out.println(nameStr + "  вы ввели номер " + (int)n);


Но хотелось бы чтобы все работало ок и с посимвольным вводом. Помогите! smile


Сообщение отредактировал Coment - Среда, 13 Июня 2012, 14:56
M1ghtMortalДата: Четверг, 21 Июня 2012, 19:37 | Сообщение # 2
участник
Сейчас нет на сайте
У тебя в потоке(Stream) после прочтения символа методом read() остается символ перевода строки. Я сделал вот так:
Code
c = (char) bistream.readLine().charAt(0);

Работает на этом этапе нормально. Другое деле что вообще нужно бы получше проверять то, что тебе вводят.


Java/C++/Unity(C#) Programmer.
Мой блог MightMortal.RU
ComentДата: Четверг, 21 Июня 2012, 22:31 | Сообщение # 3
почетный гость
Сейчас нет на сайте
Спасибо за ответ smile
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг