#java #arrays #char
Вопрос:
Я изучаю язык Java, и прямо сейчас я занимаюсь небольшим проектом, который называется игрой в морской бой.
Вопрос: Я хочу заполнить массив символов случайными символами в определенном индексе, но когда весь массив печатается в консоли, эти символы не должны быть видны пользователю, потому что на основе этих символов пользователь попадет в эти символы.
Комментарии:
1. Если у вас есть конкретные индексы, вы можете просто проверить, является ли это одним из них, прежде чем печатать?
2. Пожалуйста, для начала предоставьте свой исходный код. Лучше указать вам, где в вашем исходном коде что-то идет не так
3. Пожалуйста, предоставьте достаточно кода, чтобы другие могли лучше понять или воспроизвести проблему.
Ответ №1:
Быстрым и грязным решением было бы просто проверить, должен ли символ быть скрыт или нет при их распечатке:
public static void main(String[] args)
{
//your char array
char[] charsArray = {'a', 'b', 'c', 'd', 'e'};
//chars you want to hide
char[] charsToHide = {'b', 'd'};
//loop over you char array
for (char myChar : charsArray)
{
//check if element is a char to hide
if (containsChar(myChar, charsToHide) == false)
//if not, print it
{System.out.print(myChar);}
}
}
public static boolean containsChar(char myChar, char[] charsToHide)
{
//loop over all chars to hide
for (char charArrayElement : charsToHide)
{
//check if you char is part of chars to be hidden
if (myChar == charArrayElement) {return true;}
}
return false;
}
Ответ №2:
Вы можете создать другой вспомогательный массив для хранения индекса случайного символа, который вы хотите скрыть от консоли. При печати в консоль проверьте, совпадает ли текущий индекс с индексом, который вы хотите скрыть из массива, только что созданного для хранения индексов.
Хорошо…. допустим, у вас есть w int во вновь созданном массиве владельцев индексов. И ваш основной символ[] содержит n элементов. Если вы примените грубую силу, это будет стоить вам O(n * w) сложности. Примерно O(n^2) сложность. Таким образом, лучшим подходом было бы заполнение вспомогательного массива в порядке возрастания. А затем выполните двоичный поиск. Сложность будет тогда O(n * lgW). Другая оптимизация может произойти с использованием хэш-карты.