Класс ниже имеет основной метод (сокращенный)
import javax.swing.*;
public class Hello
{
public static void main(String[] args)
{
int size, command;
char inputChar;
String inputString;
size = Integer.parseInt(JOptionPane.showInputDialog("Please enter a size for the array"));
CharacterList list1 = new CharacterList(size);
inputString = JOptionPane.showInputDialog("Please enter a character to add");
inputChar = inputString.charAt(0);
boolean added;
added = list1.addCharacter(inputChar);
if(added == true)
{
System.out.println(inputChar + " was added");
}
else
{
System.out.println(inputChar + " was not added");
}
}
Я хотел бы добавить символы, которые пользователь вводит в массив (размер задается пользователем). И, если размера недостаточно, я хочу удвоить размер и добавить копию всех предыдущих элементов массива в новый массив и назначить старый массив новому массиву (ссылка). Вывод: Размер массива: 3 a было добавлено [a,,,] b добавлено [a, b,] c добавлено [a, b,,,,]
public class CharacterList {
private char [] charArray;
private int count;
private void doubleArrayCapacity() {
//create new array of char, which is double length
char [] newCharArray = new char[this.charArray.length*2];
//prescribe values from old array to new one
for(int i=0; i<this.charArray.length-1; i++) {
newCharArray[i] = this.charArray[i];
}
//set newCharArray set new value of your field charArray
this.charArray = newCharArray;
}
public int indexOf(char searchingChar) {
for (int i = 0; i < charArray.length; i++) {
if(charArray[i] == searchingChar){
return i;
}
}
return -1;
}
public boolean addCharacter(char characterToAdd){
if(indexOf(characterToAdd) == -1){
if(count == charArray.length -1){
doubleArrayCapacity();
}
for(int i = 0; i<charArray.length; i++){
if(charArray[i] == ' '){
charArray[i] = characterToAdd;
break;
}
}
count++;
return true;
} else
return false;
}
}
класс выше имеет другой класс
Я хотел бы сохранить все элементы, введенные пользователем, а также удвоить пространство, не затрагивая мои элементы.
Спасибо