Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.02.2013, 23:11   #1
minime
Пользователь
 
Регистрация: 20.02.2013
Сообщений: 11
По умолчанию Добавление елемента в массив

Векторный список, не могу понять в чем проблема. Не получается добавить елемент в конец, причем нужно что бы добавление можно было вводить с руки.

Код:
public int[] data;
public void add(int element) 
	{
    int[] temp = new int[data.length+1];
		for(int i=0; i<data.length; i++){
			temp[i] = in.nextInt();
			temp[i]=data[i];	 
		}
		temp[temp.length-1]=element;
		this.data = temp;
	}

public void add(int index, int element) {
	if (index > data.length || index < 0) {
		System.out.println("ArrayIndexOutOfBoundsException : index is out of range (index < 0 || index > size())");
	}
	int[] temp = new int[data.length + 1];


	for (int i = 0; i < data.length; i++) {  
		if (i < index) { 
			temp[i] = data[i]; 
		} else {
			temp[i + 1] = data[i];
		}
	}
	temp[index] = element;
	this.data = temp;
}
И вот в main:
Код:
obj.add(element);
obj.add(element, index);
Только вот на 2 вызов на index показывает ошибку.
minime вне форума Ответить с цитированием
Старый 22.02.2013, 10:52   #2
Shepico
 
Регистрация: 23.01.2013
Сообщений: 3
По умолчанию

Записано так
Цитата:
public void add(int index, int element)
а вызов
Цитата:
obj.add(element, index);
Может просто перепутали местами element и index?
Shepico вне форума Ответить с цитированием
Старый 23.02.2013, 22:20   #3
minime
Пользователь
 
Регистрация: 20.02.2013
Сообщений: 11
По умолчанию

Я тут немного переделал, и в общем сделал добавление в любое место но при добавлении последний елемент исчезает. Вот весь код.

Код:
import java.util.Scanner;

public class Sequential 
{
	public static void main(String[] args) 
	{
	Scanner in = new Scanner(System.in);
	System.out.println("Enter max num of elements in list");
	int capasity = in.nextInt();
	List obj = new List(capasity);
	System.out.println("Enter quantity of elements");
	int element = in.nextInt();
	System.out.println("Enter your elements:");
	obj.input(element);
	System.out.println("Enter № element which u want to add:");
	int index = in.nextInt();
	System.out.println("Enter value element which u want to add:");
	int value = in.nextInt();
	obj.add(element, index, value);
	int el=0;
	boolean flag = true;
	while (flag){
	System.out.println("Do you want delete the element?(1/0)");
    int a = in.nextInt();
    switch (a)
    {
    case 1:{
    	System.out.println("Enter elements which u want to remove");
    	int numb = in.nextInt();
    	
    	if(obj.delel(element, numb))
    		el++;
    	break;
    }
    	case 0:
    		flag = false;
    		break;
    	default:System.out.println("Wrong command!");
    	break;
    }
    }
    element = element - el;
   	System.out.println("Your elements:");
	obj.ouput(element);
	}
}

class List
{
	public int[] data;
	public int capasity;
	Scanner in = new Scanner(System.in);
	public List(){}
	public List(int _capasity){
		this.capasity = _capasity;
		data = new int[_capasity];
	}
	
public int input(int element)
	{
	for (int i=0; i<element; i++)
	try {
			data[i] = in.nextInt();
		}
	catch (Exception e) 
		{
		   System.out.println("Input Exception!");
		}
	return element;
	}

public void add(int element, int index, int value) 
{
element++;
if (index < element)
{
 for (int i = element; i > index; i--)
  {
  data[i] = data[i-1];
  }
 data[index]=value;
 
}
}

public boolean delel(int element, int rank)
{
	try {
		if (rank > element)
		throw new Exception();
	for (int i = rank; i < element; i++){
		data[i] = data[i + 1];
		}
	return true;
	    }
	
	catch (Exception e) 
		{
			System.out.println("Deleting exception!");
			return false;
		}
}

public void ouput(int element)
		{
			for (int i=0; i<element; i++)
			System.out.println(""+data[i]);
		}
	}
minime вне форума Ответить с цитированием
Старый 23.02.2013, 23:56   #4
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,329
По умолчанию

Глядя на код, я вижу несколько проблем:
1. почему код не структурирован?
2. где комментарии? как я должен в нем разбираться?
3. почему добавление элемента требует 3-х параметров?
4. я не знаю, какая там описана логика в добавлении, но вижу, что она 100% в корне неверна, потому что в добавлении если и присутствует условие, то на проверку границ индекса.
Carbon вне форума Ответить с цитированием
Старый 24.02.2013, 02:29   #5
minime
Пользователь
 
Регистрация: 20.02.2013
Сообщений: 11
По умолчанию

Carbon

1.Что значит "структурирован"?
2.Проблема по сути в add и в input. То есть в capasity мы задаем размерность массива, в input мы указываем сколько элементов будет храниться у нас в массиве(я думаю тут как раз и проблема, сколько мы задаем к примеру 5, то 5 и будет выводить... Надо как то добавить на 1 елемент больше для вывода, то есть мы задали 5 и +1 в запасе).
3.element - хранит наши елементы, index - в какое место мы будем добавлять, value - число которое мы хотим ввести.
4.Учусь только джаве, так что если можно поправьте пожалуйста
minime вне форума Ответить с цитированием
Старый 24.02.2013, 03:14   #6
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,329
По умолчанию

1. Значит, чтоб код был с необходимыми отступами, пробелами и переносами. Потому что тут, в этой мешанине, разбираться очень сложно.
2. Я не пойму, максимальное количество элементов в массиве (capacity) и количество элементов в массиве (element я так понял, но почему он так назван???) - что, разные величины??? зачем? Сформулируй первоначальную задачу.
3. Опять же не вижу причин для наличия 3-х параметров. Возьми класс java.util.List и посмотри, как там выглядит метод add.
4. Я как раз этим занимаюсь.
Carbon вне форума Ответить с цитированием
Старый 24.02.2013, 03:36   #7
minime
Пользователь
 
Регистрация: 20.02.2013
Сообщений: 11
По умолчанию

2.Размерность массива. К примеру int data[] = new int data[10]; А так в capacity мы сами указываем размерность.
3.У нас преподаватель против готовых методов, нужно писать свои велосипеды...
minime вне форума Ответить с цитированием
Старый 24.02.2013, 18:18   #8
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,329
По умолчанию

По поводу первого ничего не понял.
По поводу второго, я не говорю использовать готовые решения, я говорю "посмотри, как у других сделано".
Carbon вне форума Ответить с цитированием
Старый 24.02.2013, 18:43   #9
minime
Пользователь
 
Регистрация: 20.02.2013
Сообщений: 11
По умолчанию

Если мы создаем массив из 10 елементов то в capasity мы сами устанавливаем сколько елементов будет в data.
minime вне форума Ответить с цитированием
Старый 24.02.2013, 21:56   #10
minime
Пользователь
 
Регистрация: 20.02.2013
Сообщений: 11
По умолчанию

В принципе я переделал добавление, ну тут уже другой косяк..
Добавление работает но проблема с выводом. В методе add после добавление все вывело нормально, после перехода на метод удаление то метод добавление не сохранился или я не знаю как правильно сказать... Смотрю в метод output и того элемента которого я добавлял его там нету....

Вот код:
Код:
import java.util.Scanner;

public class Sequential 
{
	public static void main(String[] args) 
	{
	Scanner in = new Scanner(System.in);
	System.out.println("Enter max num of elements in list");
	int capasity = in.nextInt();
	List obj = new List(capasity);
	System.out.println("Enter quantity of elements");
	int element = in.nextInt();
	System.out.println("Enter your elements:");
	obj.input(element);
	obj.add(element);
	int el=0;
	boolean flag = true;
	while (flag)
        {
	System.out.println("Do you want delete the element?(1/0)");
        int a = in.nextInt();
        switch (a)
       {
       case 1:
       {
    	System.out.println("Enter elements which u want to remove");
    	int numb = in.nextInt();
    	
    	if(obj.delel(element, numb))
    		el++;
    	break;
        }
    	case 0:
    		flag = false;
    		break;
    	default:System.out.println("Wrong command!");
    	break;
        }
        }
    element = element - el;
   	System.out.println("Your elements:");
	obj.ouput(element);
	}
}

class List
{
	private int[] data;
	private int capasity;
	Scanner in = new Scanner(System.in);
	public List(){}
	public List(int _capasity)
	{
		this.capasity = _capasity;
		data = new int[_capasity];
	}
	
public int input(int element)
	{
	for (int i=0; i<element; i++)
	try {
			data[i] = in.nextInt();
		}
	catch (Exception e) 
		{
		   System.out.println("Input Exception!");
		}
	return element;
	}

public int add(int element) 
	{
	System.out.println("Enter № element which u want to add:");
	int index = in.nextInt();
	System.out.println("Enter value element which u want to add:");
	int value = in.nextInt();
	int temp[];
	temp = new int [capasity + 1];
        index--;
        for (int i = 0; i < element; i++) 
      	{
          	temp[i] = data[i];
      	}
        data = temp;
        if (index > element)
      	{
    		temp[element] = value;
      	}
        else 
      	{
        for (int i = element; i > index; i--) 
      	{
          temp[i] = temp[i - 1];
      	}
        data[index] = value;
      	}
        element++;
        for (int i = 0; i < element; i++) 
    	{
    		System.out.println(""+data[i]);
    	}
	return element;
	}

public boolean delel(int element, int rank)
{
	try {
		if (rank > element)
		throw new Exception();
	for (int i = rank; i < element; i++)
		{
		data[i] = data[i + 1];
		}
	return true;
	    }
	
	catch (Exception e) 
		{
			System.out.println("Deleting exception!");
			return false;
		}
}

public void ouput(int element)
		{
			for (int i=0; i<element; i++)
			System.out.println(""+data[i]);
		}
	}

Последний раз редактировалось minime; 24.02.2013 в 22:04.
minime вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
добавление элементов в массив nhr Помощь студентам 1 11.12.2010 16:45
добавление в массив prostac Помощь студентам 0 23.09.2010 20:37
добавление столбца в массив DeFace Общие вопросы C/C++ 3 09.01.2009 19:29
Добавление в массив Шура Помощь студентам 6 30.11.2008 10:48