2013-11-19 3 views
0

основная задача этой программы являетсяУдаление массива отображения всего массива

--to показать все 20 массивы --prompt пользователя для ввода значения следует искать --then программы будет искать значение, если он найден, Disaplay строка «найдено», и это значение будет удалено --then он покажет новый набор массива --Если не найден, то вывести строку «не найден»

Heres код .. .

public class Trye { 

public static void main(String[] args) throws IOException{ 

    BufferedReader x=new BufferedReader(new InputStreamReader(System.in)); 

    int z; 
    int num[]={11,22,33,44,55,66,77,88,99,12,13,14,15,16,17,18,19,21,23,34}; 
    int items=num.length; 
    boolean found=false; 

    for(int a=0;a<items;a++){ 
    System.out.print(num[a]+" "); 

    } 
    System.out.println(" "); 

    System.out.println("Enter Value YOu Want to search"); 
    String search=x.readLine(); 
    int searchId=Integer.parseInt(search); 


    for(z=0;z<items;z++){ 
     if(num[z]==searchId) 
     { 
      found=true; 
      break;}} 

    if(found){ 
     System.out.println("Found Value! "+searchId); 

     for(int c=z;c<items;c++){ 

      num[c]=num[c+1];   
     items--; 
     } 

     for(int last=0;last<=items;last++){ 

      System.out.print(num[last]+" "); 
      } 
    } 
    else{ 
     System.out.println(searchId+" Not found"); 
    } 


    } 

} 

и мой вопрос, когда я ввожу число 11,22,33 и так далее, номера удаляются, но последний вывод (отображение массивов после удаления) составляет всего 10 элементов (это должно быть 19 элементов).

и если я ввести 34 (20-й элемент) выходные стали OUtOfbounds: 20

PLS HELP ...

+0

Когда вы говорите, что вы хотите удалить, вы просто не показываете его или хотите создать новый массив без этого значения? – Todoy

ответ

0

items-- должен быть вне для утверждения. Для товаров следует также переходить только на предметы - 1.

+0

это также работает для меня ,, thaaanks Почему я должен поставить декремент за пределы заявления? – jarnthrax

+0

Ну, элементы - это количество элементов в массиве. Если вы удалите один из них, вы хотите уменьшить его один раз. Если вы разместите его внутри, он будет уменьшать каждую итерацию. – rhobincu

+0

ahhh .. спасибо !! – jarnthrax

0

Вы должны уменьшить items перед первым циклом. Кроме того, ваш второй цикл должен быть <, не <=

EDIT: Пояснение:

Вы в настоящее время декремента items внутри вашей цикл. Это заставляет его уменьшаться слишком много раз (до 10, я думаю). Причина поставить его перед циклом, а не после этого проста: внутри вашего цикла вы используете num[c+1], который, если вы дойдете до своего исходного items из 20, приведет к ошибке индекса за пределами границ (c+1 будет 20).

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

+0

thaat работает! Можете ли вы объяснить это мне, чтобы я мог поглотить мои ошибки. – jarnthrax

+0

Здесь вы идете. Я добавил некоторые пояснения к своему сообщению. – quazzieclodo

+0

большое спасибо боссу !!! – jarnthrax

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