2013-03-21 2 views
0

вот очень простой код, в котором я пытаюсь взять ввод с клавиатуры в цикле. Для каждого входа цикл автоматически запускается два дополнительных раза и принимает значения 13 и 10, независимо от того, что я даю в качестве ввода. не могли бы вы указать, что я делаю неправильно.Ввод в систему чтения Java во время цикла

КОД:

public static void main(String args[]) 
{ 
    BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); 

    boolean loop_cond=true; 
    int n=1; 

    while(loop_cond==true) 
    { 
     try 
     { 
      System.out.print("input : "); 

      n=br.read(); 
     } 
     catch (IOException e) 
     { 
      e.printStackTrace(); 
     } 

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

    } 
} // end Main 

ВЫХОД:

input : 6 
54 
input : 13 
input : 10 
input : 9 
57 
input : 13 
input : 10 
input : 1 
49 
input : 13 
input : 10 
input : 
+2

13 является возвратом каретки, а 10 - новой линией. http://unixhelp.ed.ac.uk/CGI/man-cgi?ascii+7 –

+0

Я считаю, что ваша программа также читается символом «Enter/New line» – SNpn

+0

Понял. Но как это предотвратить? Я только хочу запустить цикл только один раз для каждого ввода, который я предоставляю. –

ответ

1

Те, вероятно, \ г \ п значения. Попробуйте сканер, чтобы принимать значения.

Scanner input = new Scanner(System.in); 
int i = input.nextInt(); 
+0

Большое спасибо Sudhanshu. Он работает так, как я хочу. Но можете ли вы рассказать мне, как реализовать это в BufferedReader? –

+0

используйте readLine() вместо read(). readLine() возвращает String, поэтому вам, возможно, придется преобразовать его в int. –

1

Изменить

n=br.read(); 

в

n = Integer.parseInt(br.readLine()); 

Но я бы порекомендовал вам использовать Scanner класс, чтобы избежать преобразования Integer.

+0

большое спасибо .. –

+0

да, будет использовать сканер класс. Было просто любопытно. –

Смежные вопросы