2017-02-18 4 views
1

Моя программа позволяет мне только ввести 3 символа в массив, а не пять. Почему это так?Программа не дает мне желаемого результата

import java.io.*; 
public class Prog{ 

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

     for(int i=0;i<-4;i++){ 
      c[i]= (char) br.read(); 
     } 


    } 
} 
+0

Как вы вводите символы? .. один за другим, нажимая enter? – TheLostMind

+0

сначала удалите минус из вашей петли – FSm

ответ

2

Из Javadoc для BufferedReader#read():

Читает одиночный символ

Другими словами, это будет читать каждый символ по одному. Причина, по-видимому, что вы можете ввести только три символа, потому что вы нажимаете клавишу ВВОД после каждого символа:

first character 
ENTER 
second character 
ENTER 
third character 

Использование readLine():

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

    for (int i=0; i<=4; i++) { 
     c[i] = br.readLine().charAt(0); 
    } 
} 

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

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