2014-10-29 2 views
0

я, имеющий входной файл
Первая строка является размер массива (N) Вторая линия Н элементПодсчитайте длину массива

я должен протекала, если N ==No of element in second line Для EX:

3 
1 3 4 //ok 
4 
3 5 6 7 7 // Do nothing 

Мой код:

Scanner in = new Scanner(new FileReader("ok.txt")); 
int n = in.nextInt(); 
if(n==in.nextLine().length()) 
// MAke an array of element 


in.nextLine().length() Is not giving me a correct length i.e 3 and 5 
+2

Какая длина тебе нужно? Что вы ожидали? –

+0

Не получишь того, что ищешь, объясните, пожалуйста, больше. – Simmant

+0

System.in используется для ввода ввода с консоли. Как вы упомянули в вопросе «У меня есть входной файл». Поэтому вам нужно передать объект FileInputStream здесь с указанием пути к файлу, о котором вы говорите. – Simmant

ответ

0

Я надеюсь, что это помогает с вопросом, предполагая, что я underst ood ваш вопрос.

BufferedReader reader = null; 
    try{ 
     reader = new BufferedReader(new FileReader("yourFile.txt")); 
     int array_size = Integer.parseInt(reader.readLine()); 
     String[] array = reader.readLine().split("\\s+"); 
     if(array_size == array.length){ 
      //continue 
     } 
    }catch(Exception ex){ 
     ex.printStackTrace(); 
    } 
5

in.nextLine() даст вам строку, содержащую:

"1 3 4" 

с 2 пробелами и 3 цифр. Вы должны сделать:

String line = in.nextLine(); 
String[] digits = line.split(" "); 
if (n==digits.length) { 
    ... 

Кроме того быть осведомлены о том, что с помощью in.nextLine() в вашем состоянии, если, приведет вас к потере содержания линии

0

Вы можете использовать этот код, чтобы прочитать две строки. Метод возвращает null, если размер не совпадает, и массив в противном случае.

public String[] readTwoLines (BufferedReader in) 
{ 
    int length = Integer.parseInt(in.readLine()); 
    String[] ints = in.readLine().split("\\s+"); 
    if (ints.length == length) return ints; 
    return null; 
} 
0
int n = in.nextInt(); 
if((n*2)==(in.nextLine().length()-1)) 
//correct length 
else 
//Incorrect length 

Попробуйте приведенный выше код. В файле, если целые числа разделены пробелами, тогда он также считается символом в длину. Вычитание одного из длины связано с тем, что количество пробелов на единицу меньше числа целых чисел. Заметим, что вышеприведенное применимо только при n> 1.