2013-11-19 2 views
-1

я хотел бы спросить, как сравнить все элементы в массиве, чтобы получить BIG ИНТ, а затем отобразить его ..Сравнение элементов в массиве [JAVA]

Heres код ..

import javax.swing.*; 
public class compare { 

public static void main(String[] args) { 


    int num[]=new int[10]; 

    for(int x=0;x<num.length;x++){ 
     num[x]=Integer.parseInt(JOptionPane.showInputDialog("Enter")); 
    } 

    for(int c=0;c<num.length;c++){ 
     if(num[c]>num[c]) 
     { 

     } 

    } 



    } 

} 

сейчас, heres мой новый код.

, но это не сравнить введенную Nums

for(int c=0;c<num.length;c++){ 
     if(num[c]>num[c]) 
     { 
      int large=num[c]; 
      JOptionPane.showMessageDialog(null, "the largest num "+large); 
     } 
+0

Вы хотите максимальный 'int'? – rgettman

+3

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

+2

'if (num [c]> num [c])' Это проверяет элементы на себя. – Smit

ответ

1

У вас есть несколько проблем в вашем коде.

if(num[c] > num[c]) 

будет проверять значение в позиции c с самим собой и всегда будет ложным. Вам нужно сравнить значение num[c] с наибольшим значением, которое вы видели до сих пор.

int large = num[c]; 
JOptionPane.showMessageDialog(null, "the largest num "+large); 

Вы объявляете large внутри цикла, а это означает, что для каждой итерации (где вы вводите, если-условие, которое Вы не делаете, но предположим, что вы делали) Вы заявляете и назначить переменную новый под названием large и присвойте ему значение num[c]. Диалог также отображается из цикла, что может привести к тому, что он будет отображаться много раз для разных значений.

Так что вам нужна переменная, которая будет содержать максимальное значение, которое мы видели до сих пор, и использовать эту переменную в цикле:

int max = num[0]; 
for(int c = 1; c < num.length; c++) { 
    if(max < num[c]) { 
     max = num[c]; 
    } 
} 

С max равно значению с индексом 0 в num я могу начать петля из индекса 1. Попробуйте понять как и почему это работает.

Когда это будет сделано, вы получите максимальное значение от num в переменной max, и вы можете отобразить свое диалоговое окно.

JOptionPane.showMessageDialog(null, "the largest num " + max); 
+0

ahmf, почему c равно 1? – jarnthrax

+1

@jarnthrax Вы можете установить его в 0, и он будет работать нормально. Я делаю это, потому что, когда я вхожу в цикл, 'max' уже равен первому значению в' num', поэтому мне не нужно сравнивать его с первым значением. Постарайтесь пройти то, что происходит шаг за шагом (возможно, записывать значения на листе бумаги) и попытаться понять, что происходит и почему. – MAV

+0

ahh, большое спасибо, сэр, я понимаю, сэр. Спасибо!! – jarnthrax

1

Вам необходимо отслеживать самый большой из найденных вами до сих пор, потому что вам нужно сравнить все остальное с этим.

Так что сделайте что-нибудь подобное;

int biggest = 0; 
for(int c=0;c<num.length;c++){ 
     if(//Some conditional) 
     { 
      biggest = //Something 
     } 
    } 

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

+0

Если 'num' содержит только отрицательные значения, вы получите неверный результат независимо от того, что он заменяет ваши комментарии. – MAV

+0

Правда, но тогда что такое «самый большой»? Самый большой по абсолютной величине? Самый большой по линейному заказу? Я сделал предположение, что они были неотрицательными, потому что это не было выяснено. – hankd

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