2013-09-26 4 views
0

Вот мой код массива:найти наибольшее значение в массиве

int h = 0; 
int i = 1; 
while (h < a.length - 1){ 
    if (a[h] < a[i]){ 
     h++; 
     i++; 
    } 
    if (a[h] > a[i]){ 
     a[i] = a[h]; 
     a[h] = a[i + 1]; 
    } 
} 
if (h == a.length - 1){ 
System.out.println(a[i]); 
} 

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

+1

Это возможность выполнить код в отладчике. Вы станете для него бесконечно лучшим программистом. Вы используете IDE? Если нет, скачайте один прямо сейчас - они бесплатны –

+0

Это действительно сумасшедший способ найти наивысшую ценность. –

ответ

0

проверить это, я не уверен, что язык вы используете, но я выбрал бы использовать for петлю вместо while

int h = 0; 
int i = 0; 
int v = null; 
while (h < a.length - 1){ 
    if(v == null || v < a[i]) 
    { 
     v = a[i]; 
     h = i; 
    } 
    i++; 
} 
if (v != null){ 
    System.out.println(v); //for value 
    System.out.println(h); //highest index 
    System.out.println(a[h]); //for value from array a 
} 
+1

Как вы можете назначить 'null' для' int' в Java? –

+0

Вы также сказали, что предпочитаете 'for' над' while', но использовали 'while' в любом случае. –

+0

@HotLicks вопрос не был помечен как 'java', поэтому я не был уверен, какой язык он использовал. – trrrrrrm

0

Try создать этот метод

public int max(int[] a) { 
     int temp = a[0]; 

     for (int i = 1; i < a.length; i++) { 
      if (a[i] > temp) { 
       temp = a[i]; 
      } 
     } 
     return temp; 
    } 

и в вашем основном способе

int[] a = new int[3]; 
     a[0]=2; 
     a[1]=3; 
     a[2]=54; 
System.out.println("Highest value is "+ max(a)); 
+0

fwiw, вы также можете просто сделать 'int [] a = {2,3,54};' –

0
int max = a[0]; 
int index = 0; 
for (int i = 1; i < a.length; i++) { 
    if (a[i] > max) { 
     max = a[i]; 
     index = i; 
    } 
} 
Смежные вопросы