2013-03-14 4 views
0

проблема заключается в том, что мы хотим, чтобы программа остановила цикл/прекратить запрашивать целые числа, когда пользователь вводит «-1», что ему не нужно получать максимальную длину нашего массиваостановить цикл от запроса пользователя

import java.util.Scanner; 
public class DELETE DUPLICATES { 
public static void main(String[] args) { 
     UserInput(); 
     getCopies(maxInput); 
     removeDuplicates(maxInput); 
} 
static int[] maxInput= new int[20]; 
static int[] copies = new int[20]; 
static int[] duplicate = new int[20]; 
//get user's input/s  
public static void UserInput() { 
    Scanner scan = new Scanner(System.in); 
     int integer = 0; 
     int i = 0; 
    System.out.println("Enter Numbers: "); 
     while(i < maxInput.length) 
     { 
       integer = scan.nextInt();   
       maxInput[i] = integer; 
         i++; 
         if (integer == -1) 
          break; 
     } 
        int j = 0; 
     for(int allInteger : maxInput) { 
       System.out.print(allInteger+ " "); 
       j++; 
     } 
} 
//to get value/number of copies of the duplicate number/s 
public static void getCopies(int[] Array) { 
    for(int allCopies : Array) { 
    copies[allCopies]++; 
} 

for(int k = 0; k < copies.length; k++) { 
    if(copies[k] > 1) { 
     System.out.print("\nValue " + k + " : " + copies[k] + " copies are detected"); 

    } 
     } 
     } 
//remove duplicates 
public static void removeDuplicates(int[] Array) { 
for(int removeCopies : Array) { 
    duplicate[removeCopies]++; 
    } 

    for(int a = 0; a < duplicate.length; a++) { 
     if(duplicate[a] >= 1) { 
      System.out.print("\n"+a); 

     } 
      } 
    } 
} 

Пример: Если входной сигнал: -1

The result of our program is : 1 2 3 3 4 5 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 
We want the result to be like: 1 2 3 3 4 5 

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

+0

Массивы имеют фиксированный размер. Если вам нужен список, который может изменить размер, попробуйте List. –

+1

Первый урок: Java не JavaScript. –

+0

'public class DELETE DUPLICATES' это не скомпилируется !! Также следуйте за Java-первой буквой класса - это капитал не все –

ответ

1

Вы можете сделать следующие изменения только для печати требуемых значений:

for(int allInteger : maxInput) 
{ 
    if(allInteger == -1) 
     break; 

    System.out.print(allInteger+ " "); 
    j++; 
} 

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

0

Максимальный массив имеет заданный размер, равный 20, поэтому он будет иметь это значение. элементов и выводит значение по умолчанию для int.

Вы можете использовать список вместо и проверить размер для максимальных входных и петель

0

выхода Если вы не необходимости использовать массив, то Collection имеет множество преимуществ. Давайте использовать List:

static int maxInputCount = 20; 
static ArrayList<Integer> input= new ArrayList<>(); 

...

for (int i = 0; i < maxInputCount; i++) 
    { 
      integer = scan.nextInt(); 
      if (integer == -1) 
       break; 
      input.add(integer); 
    } 
    for(int integer : input) { 
      System.out.print(integer+ " "); 
    } 
+0

Большое вам спасибо за вашу помощь :)) у нас есть: D – shiong

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