Почему массив не добавляет персонажа в приведенной ниже программе? - PullRequest
0 голосов
/ 09 июля 2020
import java.util.Arrays;

public class CharacterList {

    private char [] charArray;
    private int count;

    public CharacterList(int arraySize){

        charArray = new char[arraySize];

        for(int i = 0; i<charArray.length; i++){
            charArray[i] = ' ';
        }

        count = 0;

    }

    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 && charArray[charArray.length-1] != ' '){

            doubleArrayCapacity();
            for(int i = 0; i<charArray.length; i++){

                if(charArray[i] == ' '){

                    charArray[i] = characterToAdd;
                }
            }
            count ++;
            return true;

        } else if(indexOf(characterToAdd) == -1){

            for(int i = 0; i<charArray.length; i++){

                if(charArray[i] == ' '){

                    charArray[i] = characterToAdd;
                }
            }
            count++;
            return true;

        } else
            return false;

    }

    public String toString(){

        return Arrays.toString(charArray);
    }


}

output:
Entered command: 1
a was added
Entered command: 1
b was added
Entered command: 1
c was added
Entered command: 1
d was added
Entered command: 3
[a, a,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ]

Приведенный выше код - это один класс. (Другой класс не указан для удобства чтения). Я попытался ввести a, b, c (я хотел добавить эти элементы в массив). Однако происходит вышеуказанный вывод. Где я ошибаюсь?

1 Ответ

0 голосов
/ 09 июля 2020

a) В том месте, где вы добавляете символ, вы не останавливаетесь, пока не заполните весь массив символом из первой точки, где есть ''. означает, что когда вы вставили 'a', массив увидел 'a' не так, и весь массив пуст, поэтому 'a' был вставлен на первое место, а i = i + 1, а также там место было пустым поэтому буква «а» была вставлена ​​на второе место. массив должен быть заполнен, поэтому я не уверен, почему он вставил только две буквы a, но отправил вам основной код, пожалуйста. б) почему вы используете счетчик? Я видел, как вы только обновляли его, но не использовали ...

...