2015-06-09 3 views
0

вчера я появился в интервью, интервьюер сказал мне написать код для вычисления длины массива без использования свойства length класса Array.Как рассчитать длину массива с помощью библиотеки

Для examaple-

char[] array=new Scanner(System.in).nextLine().toCharArray(); 
// i have to write a code for calculating length of this array 
//I can use any operator but use of library is restricted 

Все ответа приведены here используют библиотеку String.

+0

в языке, как 'C 'мы используем while lo op сопоставил его с символом новой строки '\ n', чтобы разбить, но как это делается с объектом. –

+2

использовать попытку поймать, пока не получите исключение ArrayIndexOutOfBounds? – Gosu

+0

@Gosu. Предполагаемый да, я тоже пробовал это, но это не очень хороший стиль кодирования, чтобы определить результат по исключению. –

ответ

1
char[] array = new Scanner(System.in).nextLine().toCharArray(); 
int count = 0; 
for (int i : array) { 
    count++; 
} 
System.out.println(count); 
+0

ребяческий .... великий 'для каждой петли' является простейшим решением this.very funny.why это не строго для нас до сих пор, хороший человек работы. –

+1

В этом случае свойство 'length' используется на уровне байт-кода:' arraylength' – gontard

+0

@gontard благодарит за предоставление такой информации, но следовало ожидать, так как это делается jdk, а не нами. –

0

попробовать это:

char []c = {'a', 'b', 'c'}; 
    int i = 0; 
    int l = 0; 
    try{ 
    while(c[i++] != 0) 
    { 
     System.out.println(c[i-1]); 
     l++; 
    } 
    }catch(Exception a) 
    {}; 
    System.out.println(l); 
0

согласно моему предложению в комментариях, которые, безусловно, не является хорошей практикой.

import java.util.Scanner; 

public class QuickTester { 

    public static void main(String[] args) { 

     Scanner sc = new Scanner(System.in); 

     System.out.print("Enter something: "); 
     char [] charArr = sc.nextLine().toCharArray(); 

     int i = 0; 
     try { 
      while(true) { 
       char c = charArr[i++]; 
      } 
     } 
     catch (ArrayIndexOutOfBoundsException e) { 

     } 

     System.out.println("Length: " + (i-1)); 
    } 
} 

Выход:

Enter something: Banana 
Length: 6 
+0

Плохая практика заключается в том, чтобы не использовать свойство length. Этот вопрос интервьюера глуп. – gontard

+0

@gontard Иногда им просто нравятся вопросы об уловке? Я имею в виду, что невозможно найти длину без свойства length в конце концов. – Gosu

+0

@gontard Интервьюер никогда не бывает глупым, я думаю, он пытался узнать, на каком уровне высоты можно думать, идея заключалась не в том, чтобы получить код для кодирования перспективы. Это был тест на размышление из коробки. –

2

более хорошее решение могло бы использовать метод: java.lang.reflect.Array::getLength

Например:

import java.lang.reflect.Array; 

public class ArrayLength { 
    public static void main(String[] args) { 
     char[] array = new char[]{'a', 'b', 'a', 'c'}; 
     System.err.println(Array.getLength(array)); 
    } 

} 
+0

благодарит за лучшее решение. –

+0

Не могли бы вы показать мне код, как использовать API отражения, так как я не знаю об отражении. –

+0

@ dubey-theHarcourtians Я добавил небольшой пример – gontard

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