2015-10-21 7 views
0

Я новичок в Java и недавно переключился на Java с C, я заставил эту программу искать повторяющиеся значения, но каждый раз, когда я запускаю программу, я получаю вывод как: «Duplicate value found»Поиск повторяющихся значений в массиве целых чисел

Моего код:

public class Duplicate { 

    public static void main(String[] args) { 
    boolean found; 
    int[] nums = { 184, 254, 123, 654, 146, 392 }; 
    int x, i; 
    for (i = 0; i < 6; i++) { 
     for (x = 1; x < 5; x++) { 
     if (x != i && nums[x] == nums[i]) 
      found = true; 
     } 
    } 
    if (found = true) 
     System.out.println("Duplicate value found "); 
    else 
     System.out.println("Duplicate value not found "); 
    } 

} 

здесь нет никакого повторяющегося значения пока он отображает результаты в виде

Дублированного значения найдено

который нет здесь. не могли бы вы указать мою ошибку здесь в этом коде?

+0

Мне просто нужна подсказка или исправление в этом коде. Мне не нужна целая программа. Спасибо. – Alok

ответ

0

Я думаю, что вы забыли found = false в начале. Вы используете = вместо == в вашем втором if.

+0

я попробовал этот общественный класс Дубликат { \t «государственной статической силы основных (String [] арг) { \t \t булево найден = ложь; \t \t int [] nums = {184, 254, 123, 654, 184, 392}; \t \t int x, i; \t \t для (я = 0; г <6; я ++) { \t \t \t для (х = 1; х <5; х ++)! { \t \t \t \t, если (х = я && НУМС [х] = = nums [i]) \t \t \t \t \t found = true; \t \t \t} \t \t} \t \t, если (найдено == TRUE) \t \t \t System.out.println ("Дубликат найденное значение"); \t \t прочее \t \t \t System.out.println ("Дублирующее значение не найдено"); \t} ' } спасибо, сэр! : D это сработало. – Alok

+0

@Alok Добро пожаловать, не забудьте принять ответ. – Kotshi

+0

yes thanx за помощью – Alok

1

if (found = true) означает, что вы назначаете истинную найденную переменную, и она всегда будет возвращать true. Вот почему он всегда печатает найденное значение Duplicate. Измените его, если (найдено == TRUE)

+0

о да! я сделал необходимые изменения и получил ответ, больше не повторю эту ошибку. Thanx – Alok

+0

@Alok Я думаю, что все здесь сделали это ... – Kotshi

0

@Kotshi я попытался это

public class Duplicate { 
    public static void main(String[] args) { 
     boolean found = false; 
     int[] nums = { 184, 254, 123, 654, 184, 392 }; 
     int x, i; 
     for (i = 0; i < 6; i++) { 
      for (x = 1; x < 5; x++) { 
       if (x != i && nums[x] == nums[i]) 
        found = true; 
      } 
     } 
     if (found == true) 
      System.out.println("Duplicate value found "); 
     else 
      System.out.println("Duplicate value not found "); 
    } 
} 

спасибо, сэр! : D это сработало.

+0

Пожалуйста, добавьте комментарий к ответу. Не публикуйте свой комментарий в качестве ответа. – knut

+0

Добро пожаловать. – Kotshi

+0

@knut жаль не знал. я здесь новичок. – Alok

0

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

+0

Я буду использовать их, когда узнаю о них, поскольку я сказал, что я новичок в java и на этом сайте, поэтому использовал все, о чем я знал. – Alok

+0

и программа работала сейчас. с небольшим количеством корректировок кода – Alok

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