Нахождение любого дублирующего элемента в массиве
Я пытаюсь найти элемент, который дублируется в массиве. Программа предназначена для ввода данных пользователем.
Вот код:
package sortingattempt;
import java.util.Scanner;
public class ArraySimilar {
public static void main(String args[]){
int[] a = new int[100];
int[] b = new int[5];
int Duplicate = 0;
Scanner sc = new Scanner(System.in);
System.out.println("Enter size of array");
int size = sc.nextInt();
//Scanner elem = new Scanner(System.in);
System.out.println("Input elements in array" +size);
for(int j = 0;j<size;j++){
a[j] = sc.nextInt();
}
System.out.println(a.length);
System.out.println("a[]" + a.toString());
for (int i = 0; i < a.length;i++){
b[0] = a[i];
if (b[0] == a[i+1]){
Duplicate = b[0];
System.out.println(Duplicate);
}
i++;
}
System.out.println("No common variable");
}
}
Когда я пытаюсь запустить его, он работает правильно до строки, где я прошу пользователя дать ввод. После ввода ввода ничего не происходит. Пожалуйста, укажите ошибки в программе. Спасибо.
2 ответа
Я думаю, что происходит то, что вам не предлагают ввести число с System.out.println("Enter a number: ");
Таким образом, вы думаете, что программа не работает, хотя на самом деле она просто ждет, когда вы продолжите вводить цифры. Вы можете запросить с System.out.println()
на каждой итерации:
System.out.println("Input elements in array" +size);
for(int j = 0;j<size;j++){
System.out.println("Enter a number: ");
a[j] = sc.nextInt();
}
Кроме того, вы инициализируете свои массивы перед рукой. Разве вы не должны ждать, чтобы получить пользовательский ввод для размера, а затем инициализировать их?
int[] a;
int[] b;
Scanner sc = new Scanner(System.in);
System.out.println("Enter size of array");
int size = sc.nextInt();
a = new int[size];
b = new int[size];
Кроме того, попытка напечатать a.toString() не даст вам желаемого результата. Вы должны пройти через это или сделать что-то вроде этого
System.out.println("a[] " + Arrays.asList(a));
Изменить: Сравнить
Вы должны просто сделать значения равными в первом цикле
for(int j = 0;j<size;j++){
System.out.println("Enter a number: ");
a[j] = sc.nextInt();
b[j] = a[i];
}
Затем в нижнем цикле сравните во вложенном цикле
int dupCount = 0;
for (int i = 0; i < size; i++){
for (int j = 0; j < size; j++){
if (b[i] == a[j]){
Duplicate = a[j];
System.out.println(Duplicate);
dupCount = 0;
}
}
}
if (dupCount == 0)
System.out.println("No common variable");
Другая ошибка заключается в том, что вам нужно удалить i++ из этого блока кода
Duplicate = b[0];
System.out.println(Duplicate);
}
i++; //delete that
}
Также измените это
System.out.println("Input elements in array" +size);
for(int j = 0;j<size;j++){
a[j] = sc.nextInt();
}
System.out.println(a.length);
System.out.println("a[]" + a.toString());//change that to a[j] and put it inside the loop.
Здесь я предполагаю, что вы хотите напечатать элементы вашего массива, поэтому a.toString этого не сделает.