2013-02-21 4 views
0

У меня есть массив длины X строк строки («32», «49», «2», ...), и мне нужно найти наибольшее число в этом массиве и вернуть его (массив [3] наибольшее число)Как сравнить номер Строки?

есть библиотека, подобная массиву [0] .isLessThan (массив [3])? или что-то подобное?

программа до сих пор:

int max 0 

for(i=1; i<X; i++){ 

if(array(max).isLessThan(array[i])) 
    max = i; 
} 
+3

Преобразование его в целых числах с помощью 'Integer.parse (строка ы)' – Shivam

ответ

2

Я рекомендовал бы отливать значения целых чисел, как сравнить два значения.

Вам нужно будет отслеживать как максимальный, так и индекс. Это решение предполагает, что все значения неотрицательны (потому что я устанавливаю max в -1), но вы легко меняете max на int min или что-то в этом роде.

int max = -1; 
int index = -1; 

for (int i = 0; i < array.Length; i++) 
{ 
    int value = Integer.parse(array[i]); 
    if (value > max) 
    { 
     max = value; 
     index = i; 
    } 
} 

На данный момент у вас есть индекс наивысшего значения в массиве. Если имеется несколько максимальных значений, вы можете сохранить массив индексов.

+1

Строго говоря, не является ли это " преобразование ", а не" бросок "? – sharakan

+3

«Кастинг», по-видимому, является неправильным использованием терминологии; кастинг относится к изменению типа значения на уровне байт-кода (например, двойник, который будет передан в int, будет затем представлен 4 байтами), а то, что делается здесь, называется «разбор», т. е. семантическое преобразование информацию, представленную в виде последовательности символов. –

0

Это мое предложение. Пожалуйста, исправьте меня, если я ошибаюсь.

int max 0 

for(i=0; i<X; i++){ 

    if(array[i]).isLessThan(array[i+1])) 
     max = i+1; 
    else 
     max = i 
} 
-1

Более сложное решение для Acamedic интерес :):

public static void main(String[] args) { 

    String[] anArrayOfStrings={"199999","32", "33", 
"10000","45","99999","72987","0","92"}; 
    Test test=new Test(); 
    Test.CX cx=test.new CX(); 
    java.util.Arrays.sort(anArrayOfStrings,cx) ; 
    System.out.println("Item="+anArrayOfStrings[(anArrayOfStrings.length-1)]); 
} 

class CX<String> implements Comparator{ 

    @Override 
    public int compare(Object arg0, Object arg1) { 



     if(Integer.parseInt((java.lang.String) arg0) > 
    Integer.parseInt((java.lang.String) arg1)){ 

      return 1; 

     }else if(Integer.parseInt((java.lang.String) arg0) < 
    Integer.parseInt((java.lang.String) arg1)){ 
      return -1; 
     } 

     return 0; 
    } 


} 
+1

Вы анализируете одни и те же строки несколько раз. – whiskeysierra

+0

@whiskeysierra gr8 – user1428716

+0

@whiskeysierra Это решение относится к использованию компаратора, который должен быть стандартным способом для такой сортировки, а не для пользовательской логики. Алгоритмически говоря, дополнительный расчет parseInt немного повлияет на время выполнения, но количество задействованных Шагов одинаково. Таким образом, это лучшее решение вместо того, чтобы иметь собственную логику для поиска наибольшего числа – user1428716

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